【发布时间】:2015-06-04 22:23:51
【问题描述】:
我想知道是否有在 pyqt“WITHOUT”触发事件的复选框(QCheckBox)上禁用(setCheckState)?所以这只是一个显示更改,现在取消勾选复选框,但没有触发我连接到的方法。感谢您的帮助。
如果可能的话,我会喜欢一个基本的例子。
【问题讨论】:
我想知道是否有在 pyqt“WITHOUT”触发事件的复选框(QCheckBox)上禁用(setCheckState)?所以这只是一个显示更改,现在取消勾选复选框,但没有触发我连接到的方法。感谢您的帮助。
如果可能的话,我会喜欢一个基本的例子。
【问题讨论】:
您可以在禁用 QCheckBox 之前简单地阻止信号,并且
之后重新启用它们。假设 chk 是您的 QCheckBox
对象只是做:
chk.blockSignals()
# then you change the checkbox as you want
chk.unblockSignals()
【讨论】:
blockSignals() 的最大缺点是它会阻止小部件的 所有 信号——包括 Qt 内部连接的信号。由于意外的副作用,这有时会使它成为一个错误陷阱。
@mguijarr 的回答说明了一切,但显然他们稍微改变了功能。
在 QT 5.14.0 中是:
chk.blockSignals(True)
chk.blockSignals(False)
# same syntax for c++ and py at this place
(也许这最好是一个评论,但我需要更多的 cmets 代表)
【讨论】: