c++ - 在 Qt 中防止触发信号

标签 c++ qt checkbox signals-slots

我们有一个 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/

相关文章:

c++ - gdb 在检查断点处的条件时失败

c++ - 实现弹出最常添加项目的堆栈

c++ - 在已经包含一些文本的 QTextEdit 中显示来自 QLineEdit 的文本并实时更新

javascript - 如何让单选按钮工作两个任务?

c++ - 处理鼠标事件 SFML

c++ - Qt中确定接收到的字符串后如何在数组中保存以下100个接收值

c++ - 指向数据结构中元素的指针安全吗? (C++ 与 QT)

Qt 忽略 SSL 错误

qt - PyQt-QtableView header 。如何添加右上角的小按钮来隐藏/显示带有选中/未选中复选框的列?

javascript - 如果所有复选框都具有相同的名称,如何验证复选框选择?