class QSignalBlocker#

PySide6.QtCore.QObject.blockSignals() 的异常安全包装。 更多…

概要#

方法#

注意

本文档可能包含自动从C++转换为Python的代码片段。我们随时欢迎对代码片段翻译的贡献。如果您发现翻译有问题,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 创建工单的方式告诉我们。

详细描述#

警告

本节包含自动从C++转换为Python的代码片段,可能存在错误。

QSignalBlocker 可以在任何需要使用 blockSignals() 方法的地方使用。它在构造函数中会阻塞信号,并在析构函数中将状态重置为构造函数之前的状态。

blocker = QSignalBlocker(someQObject)
# no signals here

这等价于

wasBlocked = someQObject.blockSignals(True)
# no signals here
someQObject.blockSignals(wasBlocked)

除非使用了 QSignalBlocker,否则代码在异常面前是不安全的。

另请参阅

QMutexLocker QEventLoopLocker

__init__(o)#
参数::

oQObject

这是一个重载函数。

调用 object.blockSignals(true)。

__init__(o)
参数::

oQObject

构造函数。调用 object->blockSignals(true)。

__enter__()#
返回类型: :

QSignalBlocker

__exit__(arg__1, arg__2, arg__3)#
参数::
  • arg__1 – 对象

  • arg__2 – 对象

  • arg__3 – 对象

dismiss()#

取消 QSignalBlocker 。它将不再访问在构造函数中传给它的 QObject。调用 unblock()reblock() 以及析构函数将不再有任何效果。

reblock()#

在先前调用 unblock() 后重新阻塞信号。

reblock() 的调用次数和 unblock() 的调用次数不会被计数,所以每次 reblock() 都会撤销任何数量的 unblock() 调用。

unblock()#

临时恢复在创建 signalsBlocked() 的状态,回到此 QSignalBlocker 构造函数运行之前的状态。要撤销操作,请使用 reblock() 方法。

不会记录 reblock() 和 unblock() 调用的次数,因此每次 unblock() 都将撤销任意多次的 reblock() 调用。