訊號與槽 裝飾器

2022-06-13 18:30:20 字數 1103 閱讀 1935

所謂裝飾器訊號與槽,就是通過裝飾器的方法來定義訊號和槽函式。具體使用方法如下:

@pyqt5.qtcore.pyqtslot(引數)

defon_傳送者物件名稱_發射訊號名稱(self, 引數):

pass

這種方法有效的前提是下面的函式已經執行:

qtcore.qmetaobject.connectslotsbyname(qobject)

在上面**中,「傳送者物件名稱」就是使用setobjectname函式設定的名稱,因此自定義槽函式的命名規則也可以看成:on + 使用 setobjectname設定的名稱 + 訊號名稱

具體的使用方法:

import

sysfrom pyqt5.qtcore import

pyqtslot, qobject, qmetaobject

from pyqt5.qtwidgets import

class

custwidget(qwidget):

def__init__(self, parent=none):

super().

__init__

(parent)

self.okbutton = qpushbutton("ok"

, self)

#使用setobjectname設定物件名稱

self.okbutton.setobjectname("

okbutton")

layout =qhboxlayout()

layout.addwidget(self.okbutton)

self.setlayout(layout)

qmetaobject.connectslotsbyname(self)

@pyqtslot()

defon_okbutton_clicked(self):

print("

單擊了 ok按鈕")

if__name__ == '

__main__':

win =custwidget()

win.show()

PyQt5 訊號與槽 裝飾器定義槽函式

使用方法 pyqt5.qtcore.pyqtslot 引數 def on 傳送者物件名稱 發射訊號名稱 self,引數 pass 使用方法有效的前提是下面函式執行的情況下 qmetaobject.connectslotsbyname qobecjt 案例 1 from pyqt5 import qt...

qt 槽與訊號

槽就是乙個可以被呼叫處理特定訊號的函式 乙個小的qt類如下 class foo public qobject public slots void setvalue int signals void valuechanged int private int val qt中的元物件系統是用來處理物件間通...

QT訊號與槽

初學qt,覺得理解qt訊號與槽比較重要,qt很多時候都需要用到訊號和槽。發射訊號會觸發相對應的槽函式的執行。乙個訊號可以對應多個槽,多個訊號可以對應乙個槽。訊號和槽是通過connect這個方法進行建立聯絡的。qt中有些類會自帶有一些訊號和槽函式,當然訊號和槽函式也可以自己定義。下面來看下很簡單的 會...