初学PyQt,如何理解signal-slot?

以下面一段小程序为例 import sys from PyQt5.QtCore import pyqtSignal, QObject from PyQ…
关注者
45
被浏览
9,724

6 个回答

谢邀。

event 和 signal-slot是Qt中不同的两套事件传递系统。这个例子同时涉及了这两个系统。

app.exec_() 是个死循环,它不停的从操作系统内部轮询设备事件,并按照Qt内部定义的事件分发机制送给每一个Widget。Widget内部又根据事件的类型,调用对应的事件处理函数。在这个例子里,当你用鼠标点击窗体的时候,Example.mousePressEvent 首先被执行。到这里之前都和信号槽没有关系。

随后,Example.c.closeApp这个pyqtSignal实例的emit函数被调用。此时,closeApp将遍历连接到它自己身上所有的槽函数,并一一调用之。PyQt中任意成员函数均可作为槽函数使用,故Example.close被调用,窗体关闭。

我是用tk 和kivy的,Qt真心不懂,谢邀