QT多執行緒 訊號與槽機制

2022-06-23 15:15:14 字數 743 閱讀 4975

qt應用程式只能在主執行緒重新整理控制元件。如果想在其他執行緒重新整理控制元件,需要傳送訊號給主執行緒,由主執行緒負責呼叫相應的函式來重新整理。

pyqt5中,使用訊號需要匯入pyqtsignal

from pyqt5.qtcore import pyqtsignal, qobject
建立自定義訊號:

# 建立自定義訊號,訊號只能定義成類變數

class communicate(qobject):

signal_1 = pyqtsignal() # 無引數的訊號

signal_2 = pyqtsignal([str]) # 有引數的訊號

自定義槽函式:

def slot_1(self): // 對應的訊號無參

// do something

def slot_2(self, string): // 對應的訊號有[str]型別的引數

str1 = string

// do something

將自定義訊號與槽函式繫結:

def __init__(self):

communicate.signal_1.connect(self.slot_1)

communicate.signal_2.connect(self.slot_2)

使用c++編寫qt應用程式時,使用了訊號和槽的**需要進行qmake,qt的ide中右鍵點選檔案選擇qmake。