触发响应用户行为和GUI事件的操作
使用信号和槽构建复杂的应用程序行为,并使用自定义事件覆盖小部件事件处理。
如前所述,用户与Qt应用程序的每次交互都会生成一个事件。事件有多种类型,每一种都代表一种不同类型的交互—例如鼠标或键盘事件。
发生的事件被传递到发生交互的小部件上特定于事件的处理程序。例如,单击小部件事件将QMouseEvent发送到小部件上的. mousepressevent处理程序。此处理程序可以查看事件所有信息,比如触发事件的原因以及事件发生的具体位置。
信号/插槽机制具有以下功能。
- 信号可以连接到许多插槽。
- 一个信号也可以连接到另一个信号。
- 信号参数可以是任何Python类型。
- 插槽可以连接到许多信号。
- 连接可以是直接的(即同步)或排队的(即异步)。
- 可以跨线程进行连接。
- 信号可能断开。
信号
信号(特别是未绑定的信号)是类属性。当信号被引用为该类实例的属性时,PyQt5会自动将该实例绑定到该信号,以创建绑定信号。这与Python本身用于从类函数创建绑定方法的机制相同。
一个绑定信号具有connect(),disconnect()和emit()实现相关联的功能的方法。它还具有一个signal属性,该属性是Qt SIGNAL() 宏将返回的信号的签名。
信号可能重载,即具有特定名称的信号可能支持多个签名。可以用签名对信号进行索引,以选择所需的信号。签名是一系列类型。类型可以是Python类型对象,也可以是C ++类型名称的字符串。C ++类型的名称会自动进行规范化,例如,QVariant可以使用它来代替non-norm