2016-11-10 70 views
-1

我想通過setter方法將bool傳遞給qdialog;代碼編譯,但該值似乎並沒有在對話框中。我只包含了相關的代碼,我希望它是可讀的。我在這裏錯過了什麼?傳遞bool到qdialog

// forcequitDialog .h文件

public: 
setAction(const bool &takeaction); 

private: 
    bool m_action; 

// forcequitDialog.cpp

forcequitDialog::forcequitDialog(QWidget *parent) : 
    QDialog(parent), 
    ui(new Ui::forcequitDialog) 
{ 
    ui->setupUi(this); 

     if (m_action) 
      ui->title->setText("Start Application"); 
     else 
     ui->title->setText("Stop Application"); 

forcequitDialog::~forcequitDialog() 
{ 
    delete ui; 
} 



    void forcequitDialog::setAction(const bool &takeaction) 
    { 
     m_action = takeaction; 



    } 

// MainWindow.cpp

forcequitDialog dialog; 

    dialog.setAction(true); // pass value to dialog 

    dialog.exec(); 
+1

代碼在哪裏註釋「不起作用」?當然不在全球範圍內? – krzaq

+0

@krzaq我已添加代碼。 – Alan

+2

代碼仍然看起來有點won as,但你似乎在構造函數中使用了'm_action',然後調用'setAction(true)'。 –

回答

2
forcequitDialog dialog; // constructor called here 

你行:

if (m_action) // doesn't work 
    ui->title->setText("Start Application"); 
else 
    ui->title->setText("Stop Application"); 

您的來電之前執行:

dialog.setAction(true); // pass value to dialog 

要麼將​​這些指令轉換成的setAction()函數或通過takeaction到你的構造。

btw:對bool使用const引用是無用的,它不是一個沉重的對象。