QT多线程、信号与槽机制
QT应用程序只能在主线程刷新控件。如果想在其他线程刷新控件,需要发送信号给主线程,由主线程负责调用相应的函数来刷新。
pyQt5中,使用信号需要导入pyqtSignal。
from PyQt5.QtCore import pyqtSignal, QObject
创建自定义信号:
# 创建自定义信号,信号只能定义成类变量
class Communicate(QObject):
signal_1 = pyqtSignal() # 无参数的信号
signal_2 = pyqtSignal([str]) # 有参数的信号
自定义槽函数:
class AppWindow(QWidget):
def slot_1(self): // 对应的信号无参
// do something
def slot_2(self, string): // 对应的信号有[str]类型的参数
str1 = string
// do something
将自定义信号与槽函数绑定:
class AppWindow(QWidget):
def __init__(self):
Communicate.signal_1.connect(self.slot_1)
Communicate.signal_2.connect(self.slot_2)
使用C++编写QT应用程序时,使用了信号和槽的代码需要进行qmake,QT的IDE中右键点击文件选择qmake。

浙公网安备 33010602011771号