訊號與槽 入門應用

2022-06-13 18:36:08 字數 2944 閱讀 2535

訊號(signal)和槽(slot)是qt的核心機制。在建立事件迴圈之後,通過建立訊號和槽的連線就可以實現物件之間的通訊。當訊號發射(emit)時,連線的槽函式將會自動執行。在pyqt5中,訊號和槽通過qobject.signal.connect()連線。

所有從qobject類或其子類(如qwidget)派生的類都能夠包含訊號和 槽。當物件改變其狀態時,訊號就由該物件發射出去。槽由於接收訊號,但它們是普通的物件成員函式。多個訊號可以與單個槽進行連線,單個訊號也可以與多個槽進行連線。總之,訊號和槽構建了一種強大的控制項程式設計機制。

在qt程式設計中,通過qt訊號槽機制對滑鼠或鍵盤在介面上的操作進行響應處理,例如對滑鼠單擊按鈕的處理。對控制項發射的訊號指定對應的處理槽函式的方法:第一,在視窗的ui設計中操作新增訊號和槽;第二,通過**連線訊號和槽;第三種,通過eric的「生成對話方塊**」的功能產生訊號和槽。

1. 內建訊號和槽函式

from pyqt5.qtwidgets import *

import

sysclass

winform(qwidget):

def__init__(self, parent=none):

super().

__init__

(parent)

self.setwindowtitle(

"內建的訊號/槽示例")

self.resize(330, 50)

btn = qpushbutton("關閉"

, self)

btn.clicked.connect(self.close)

if__name__ == "

__main__":

win =winform()

win.show()

2. 內建訊號和自定義槽函式

from pyqt5.qtwidgets import *

import

sysclass

winform(qwidget):

def__init__(self, parent=none):

super().

__init__

(parent)

self.setwindowtitle(

"內建的訊號和自定義槽函式示例")

self.resize(330, 50)

btn = qpushbutton("關閉"

, self)

btn.clicked.connect(self.btn_close)

defbtn_close(self):

self.close()

if__name__ == "

__main__":

win =winform()

win.show()

3. 自定義訊號和內建槽函式

from pyqt5.qtwidgets import *

from pyqt5.qtcore import

pyqtsignal

import

sysclass

winform(qwidget):

#自定義訊號,不帶引數

button_clicked_signal =pyqtsignal()

def__init__(self, parent=none):

super().

__init__

(parent)

self.setwindowtitle(

"自定義訊號和槽函式示例")

self.resize(330, 50)

btn = qpushbutton("關閉"

, self)

#連線訊號與槽函式

btn.clicked.connect(self.btn_clicked)

#接收訊號,連線到槽函式

self.button_clicked_signal.connect(self.close)

defbtn_clicked(self):

#傳送自定義訊號,無引數

self.button_clicked_signal.emit()

if__name__ == "

__main__":

win =winform()

win.show()

4. 自定義訊號和槽函式

from pyqt5.qtwidgets import *

from pyqt5.qtcore import

pyqtsignal

import

sysclass

winform(qwidget):

#自定義訊號,不帶引數

button_clicked_signal =pyqtsignal()

def__init__(self, parent=none):

super().

__init__

(parent)

self.setwindowtitle(

"自定義訊號和槽函式示例")

self.resize(330, 50)

btn = qpushbutton("關閉"

, self)

#連線訊號與槽函式

btn.clicked.connect(self.btn_clicked)

#接收訊號,連線到自定義的槽函式

self.button_clicked_signal.connect(self.btn_close)

defbtn_clicked(self):

#傳送自定義訊號,無引數

self.button_clicked_signal.emit()

defbtn_close(self):

self.close()

if__name__ == "

__main__":

win =winform()

win.show()

訊號與槽 高階應用

1.高階自定義訊號與槽 自定義訊號的一般流程 1 定義訊號 2 定義槽函式 3 連線訊號與槽函式 4 發射訊號 例項 import sysfrom pyqt5.qtcore import pyqtsignal,qobject class custsignal qobject 宣告無引數的訊號 sig...

QT入門之訊號與槽

訊號與槽的關聯使用 qobject connect 函式實現的,其基本格式是 qobject connect sender,signal signal receiver,slog slot connect 是 qobject類的乙個靜態函式,而qobject是所有qt類的基類,在實際呼叫時可以忽略前...

Qt入門之訊號與槽機制

就我個人來理解,訊號槽機制與windows下訊息機制類似,訊息機制是基於 函式,qt中用訊號與槽來代替函式指標,使程式更安全簡潔。訊號和槽機制是 qt 的核心機制,可以讓程式設計人員將互不相關的物件繫結在一起,實現物件之間的通訊。connect sender,signal signal receiv...