在我的 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;
}