将布尔值传递给 qdialog [关闭]

Posted

技术标签:

【中文标题】将布尔值传递给 qdialog [关闭]【英文标题】:pass bool to qdialog [closed] 【发布时间】:2016-11-10 02:27:24 【问题描述】:

我正在尝试通过 setter 方法将 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();

【问题讨论】:

注释“不起作用”的代码在哪里?确定不在全球范围内? @krzaq 我已经添加了代码。 粘贴后的代码看起来仍然有些奇怪,但您似乎在构造函数中使用了m_action,然后又调用了setAction(true) @ken-y-n 我的 mainwindow.cpp 通过 dialog.setAction(true);然后调用 dialog.exec() 我不明白有什么问题。 @Alan,请不要编辑问题来纠正我们指出的问题,因为这会使以后的读者感到困惑并使 cmets 和答案变得多余。 【参考方案1】:
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 传递给您的构造函数。

顺便说一句:对 bool 使用 const 引用是没有用的,它不是一个沉重的对象。

【讨论】:

以上是关于将布尔值传递给 qdialog [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

通过 Ajax 将布尔值传递给 asp.net api 控制器

如何将管道中的布尔参数值传递给下游作业?

如何在 Tensorflow 中使用 benchmark_model 时将布尔值传递给占位符?

如何在意图之间传递布尔值

传递给 Y 的参数 X 必须是布尔值的实例,给定的布尔值 - PHP7

从列表中删除布尔值[重复]