您好我一直在寻找我的问题的样本。我有一个按钮,它是通过codes.i创建的10个,现在我的问题是我需要设置一个悬停事件。我一直在阅读QHover,但我仍然无法制作正确的代码。样本不能被初学者理解,请帮帮我。真的需要
编辑:我已经搜索了更多有关此问题的答案。我发现我需要设置 QEvent.HoverEnter 这是正确的吗?
答案 0 :(得分:1)
我之前已经将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和leaveEvent方法。
答案 1 :(得分: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)