如何让鼠标悬浮在qpushbutton上就执行mouseMoveEvent 而不是按下左才执行
时间: 2024-02-22 08:55:03 浏览: 47
如果你想让鼠标悬浮在QPushButton上就执行mouseMoveEvent而不是按下左键才执行,你需要重新实现QPushButton的enterEvent()函数和leaveEvent()函数。enterEvent()函数会在鼠标进入QPushButton时被调用,而leaveEvent()函数会在鼠标离开QPushButton时被调用。你可以在这两个函数中添加自己的代码来实现鼠标悬浮时执行mouseMoveEvent的功能。下面是一个示例代码:
```python
from PyQt5.QtWidgets import QApplication, QPushButton, QWidget
from PyQt5.QtCore import Qt
class MyButton(QPushButton):
def __init__(self, parent=None):
super(MyButton, self).__init__(parent)
self.setMouseTracking(True) # 设置鼠标追踪
def enterEvent(self, event):
# 鼠标进入按钮时触发
self.mouseMoveEvent(event)
def leaveEvent(self, event):
# 鼠标离开按钮时触发
pass # 可以不做任何操作
def mouseMoveEvent(self, event):
# 鼠标移动时触发
print("Mouse move on button: ({}, {})".format(event.x(), event.y()))
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Mouse Tracking')
button = MyButton("Hover me!", self)
button.setGeometry(50, 50, 200, 100)
if __name__ == '__main__':
app = QApplication([])
widget = MyWidget()
widget.show()
app.exec_()
```
在这个示例代码中,我们重新实现了QPushButton的enterEvent()函数和mouseMoveEvent()函数,使鼠标在进入按钮后即可触发mouseMoveEvent()函数。我们还设置了setMouseTracking(True),以便在鼠标进入按钮前,能够获取到鼠标的移动事件。
阅读全文