Qt复选框stateChanged事件处理程序

时间:2013-09-06 10:25:33

标签: qt windows-7 checkbox callback visual-studio-2005

在我的Qt应用程序中,我想使用一个复选框在切换为未选中时执行A,并在切换到选中时执行B.该复选框挂钩到foo(int)。

connect(myCB, SIGNAL(stateChanged(int)), this, SLOT(foo(int)));

当完整性检查失败时出现问题(例如,某些变量得到无效值),我只想显示错误消息并保持一切不变。所以我再次切换复选框以将其恢复到原来的位置。但似乎这个动作会再次触发回调函数foo(int),这会弄乱一切。我不希望它在这种情况下触发回调。我应该怎么做?或者,还有更好的方法?请参阅下面的伪代码。

void foo(int checkState)
{
  if (checkState == Qt::Unchecked) {
    if (!passSanityCheck()) {
      // show error message
      checkBoxHandle->toggle();
      return;
    }

    // do A when it's unchecked
  }
  else {
    if (!passSanityCheck()) {
      // show error message
      checkBoxHandle->toggle();
      return;
    }

    // do B when it's checked
  }
  return;
}

1 个答案:

答案 0 :(得分:8)

QCheckBox::clicked(bool checked)信号连接到您的广告位:

QCheckBox *cb = new QCheckBox(this);
connect(cb, SIGNAL(clicked(bool)), this, SLOT(toggled(bool)));

如果您拨打setDown()setChecked()toggle(),则不会发出此信号。