PyQt 5プログラミング(22):カスタムイベント

1204 ワード

       ,   QCoreApplication       :

sendEvent(QObject receiver, QEvent event) -    QCoreApplication notify()       receiver  ,              。                ;
postEvent(QObject  receiver, QEvent  event) -                ,    。           ,                         。  ,                。

        receiver          ;event            (  QMouseEvent)  ,       QEvent    class  。     MouseButtonPress          :

e = QtGui.QMouseEvent(QtCore.QEvent.MouseButtonPress, QtCore.QPointF(5, 5), QtCore.Qt.LeftButton, QtCore.Qt.LeftButton, QtCore.Qt.NoModifier) QtCore.QCoreApplication.sendEvent(self.label,e)カスタムイベントを送信するには、QEventの継承クラスを作成し、クラスでregisterEventType()静的関数を使用してカスタムイベントを登録し、イベント識別子をクラス属性に格納する必要があります.class MyEvent(QtCore.QEvent): idType = QtCore.QEvent.registerEventType() def init(self, data): QtCore.QEvent.init(self, MyEvent.idType) self.data = data def get_data(self): return self.DataはMyEventイベントをラベルコントロールのコード:QtCoreに送信する.QCoreApplication.sendEvent(self.label,MyEvent(「512」)は、event(self,even)またはcustomEvent(self,event)メソッドを使用してカスタムイベントを処理することができる.例えば、def customEvent(self,e):if e.type()==MyEvent.idType: self.setText("Received data: {0}".format(e.get_data()))