Qt:未调用手动函数调用的插槽

时间:2017-07-25 06:43:20

标签: qt signals-slots

我有一个带有名为

的插槽的复选框
void MainWindow::on_checkBoxPhaseUnwrap_stateChanged(int state)

这是自动连接的。

MainWindow的构造函数就像这样

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow),
{
    ui->setupUi(this);
    setupWidgets();
}

setupWidgets中,我设置了复选框的值

ui->checkBoxPhaseUnwrap->setChecked(true);

但是未调用插槽,因此后台中的数据库未更新。

显示窗口后,我可以单击复选框,照常调用插槽。当我调用setChecked时为什么不调用它注意:在gui设计器中,默认值已经是checked。这是什么原因?

1 个答案:

答案 0 :(得分:2)

  

在gui设计器中,已经检查了默认值。这是什么原因?

void QCheckBox::stateChanged(int state)

  

每当复选框的状态发生变化时,即每当用户检查或取消选中状态时,都会发出此信号。

这意味着如果您尝试将状态从Qt::Checked更改为Qt::Checked,则不会发出此消息。

解决方案将自己发出信号:

setupWidgets添加

emit ui->checkBoxPhaseUnwrap->stateChanged(Qt::Checked);