2016-11-10 52 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引用是无用的,它不是一个沉重的对象。