Qt採用信號槽來設定UI界面上元素動做的事件綁定。自Qt4.5開始,引入了一個新的信號槽與事件綁定的方法。界面上控件能夠發出的默認內容都已經由Qt庫定義好了,咱們只須要定義處理方法便可。python
從Designer設計出的控件中會使用setObjectName設定控件的名字,這個名字就能夠讓咱們快捷的定義指定信號槽對應的處理方法。經過@PyQt4.QtCore.pyqtslot()修飾方法能夠完成這一動做。定義方法以下:函數
@PyQt4.QtCore.pyqtSlot(參數) #這個參數請到SDK中找,寫參數的類型便可 def on_對象名稱_信號名稱(self,參數): #on接setObjectName設定的對象名字再接SDK中標出的信號名稱,便可完成信號處理事件的定義 pass
這種定義方法一樣適用與自定義的信號槽。設計
首先須要定義信號:code
class MyWidget(QWidget): Signal_NoParameters = PyQt4.QtCore.pyqtSignal() # 無參數信號 Signal_OneParameter = PyQt4.QtCore.pyqtSignal(int) # 一個參數(整數)的信號
而後定義信號的激發:對象
class MyWidget(QWidget): def mousePressEvent(self, event): self.Signal_NoParameters.emit() # 煥發無參數信號 self.Signal_OneParameter.emit(1) # 煥發一個參數(整數)的信號
定義槽函數:事件
class MyWidget(QWidget): @PyQt4.QtCore.pyqtSlot() def setValue_NoParameters(self): pass @PyQt4.QtCore.pyqtSlot(int) def setValue_OneParameter(self,nIndex): pass
以後須要將信號與槽進行鏈接:get
widget.Signal_NoParameters.connect(self.setValue_NoParameters,Qt.QueuedConnection) widget.Signal_OneParameter.connect(self.setValue_OneParameter,Qt.QueuedConnection)