将布尔值传递给 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 时将布尔值传递给占位符?