我们有一个 QCheckBox
对象,当用户检查它或删除检查时,我们想要调用一个函数,因此我们将我们的函数连接到 stateChanged ( int state )
信号。另一方面,根据某些情况,我们也改变了代码中QCheckBox
对象的状态,这会产生不想要的信号。
在某些情况下有什么办法可以防止触发信号吗?
最佳答案
您可以使用 clicked
信号,因为它仅在用户实际单击复选框时发出,而不是在您使用 setChecked
手动检查时发出.
如果您只是不想在某个特定时间发出信号,您可以使用 QObject::blockSignals
像这样:
bool oldState = checkBox->blockSignals(true);
checkBox->setChecked(true);
checkBox->blockSignals(oldState);
这种方法的缺点是所有信号都会被阻塞。但我想这对于 QCheckBox
来说并不重要。
关于c++ - 在 Qt 中防止触发信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3556687/