【Qt】信号与槽

信号就是“某某事件发生了”这么一个信号,槽就是对应事件发生时所需采取的应对措施

连接方式:widget.信号.connect(槽函数)

一、信号

  • obj.objectNameChanged:对象名称发生改变时发射此信号,对应于 obj.setObjectName
  • obj.destroyed:对象销毁时发射此信号

1.1 控件内置信号

  • QPushButton().pressed:按下
  • QPushButton().clicked:按下并抬起

1.2 自定义信号

二、槽

  • 一个信号可以连接多个槽函数
  • 一个信号可以连接另一个信号
  • 信号的参数可以是任何 Python 类型
  • 一个槽函数可以监听多个信号

三、信号处理

  • widget.信号.connect(槽函数)
  • obj.disconnect():取消信号与槽的连接(此处 obj 可为控件或信号)
  • widget.blockSignals(bool):临时阻断/暂停控件所有信号与槽的连接
    True 表示断开;False 表示恢复
  • widget.signalsBlocked():信号是否被阻断
  • widget.receivers(信号):与当前信号连接的槽函数个数

案例:修改窗口标题时得到提示

window = QWidget()
def notice(title):
    window.windowTitleChanged.disconnect()
    window.setWindowTitle(f"*{title}")
    window.windowTitleChanged.connect(notice)
window.windowTitleChanged.connect(notice)
window.setWindowTitle("Hello PyQt!")

你可能感兴趣的:(【Qt】信号与槽)