Я вложил в подкласс mouseMoveEvent QPushButton, прежде чем выяснить, когда мышь наведена на него.Вот пример:
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 и покидает его, а затем заново реализует методы enterEvent и exitEvent .