2011-08-02 20 views
0

こんにちは私は私の問題のサンプルを探しています。私はプッシュボタンを持っています、それはcodes.iによって作られています。私はそれらの10個を作成しました、今私の問題は、私はそれにホバーイベントを設定する必要があります。私はQHoverを読んでいますが、それでも私は正しいコードを作ることができません。サンプルは初心者で理解できないので、私を助けてください。本当に必要がありますQpushbuttonのPyQTQ HoverEvent?

編集:私はこれに関するいくつかの答えをさらに検索しています。私はセットアップにQEvent.HoverEnterを必要とすることを発見し、この正しいですか?

答えて

0

マウスが上にマウスを移動されたときに調べるために前に私がのQPushButtonのmouseMoveEventをサブクラス化しました。ここではサンプルです:

from PyQt4.QtGui import QApplication, QMainWindow, QPushButton, \ 
      QVBoxLayout, QWidget 

class HoverButton(QPushButton): 
    def __init__(self, parent=None): 
     QPushButton.__init__(self, parent) 
     self.setMouseTracking(True) 

    def mouseMoveEvent(self, event): 
     print 'Mouse moved!' 

class MainWindow(QMainWindow): 
    def __init__(self, parent=None): 
     QMainWindow.__init__(self, parent) 
     button = HoverButton('Test') 
     centralWidget = QWidget() 
     vbox = QVBoxLayout(centralWidget) 
     vbox.addWidget(button) 
     self.setCentralWidget(centralWidget) 

def startmain(): 
    app = QApplication(sys.argv) 
    mainwindow = MainWindow() 
    mainwindow.show() 
    sys.exit(app.exec_()) 

if __name__ == "__main__": 
    import sys 
    startmain() 

あなたのHoverButtonオブジェクトが信号を発した後、あなたのメインウィンドウの信号に他の機能を接続して作ることができます。

マウスがQPushButtonに入ったり出たりするタイミングを知りたい場合は、代わりにenterEventleaveEventメソッドを再実装してください。ボタンが含まれ、あなたのウィンドウで

0

あなたがあなた自身のイベントフィルタを実装することができ

class MyWidget(QWebView): 
    def __init__(self): 
     super(MyWidget, self).__init__() 
     self.installEventFilter(self) 

    def eventFilter(self, qobject, qevent): 
     qtype = qevent.type() 
     if qtype == QEvent.HoverMove: 
      ... hover logic depending in which qobject, since you have 10 buttons 
     return super(MyWidget, self).eventFilter(qobject, qevent)