QGraphicsItem不用点击鼠标的鼠标移动事件
时间: 2023-07-29 12:14:34 浏览: 228
可以使用QGraphicsItem的hoverMoveEvent()函数来实现鼠标移动时的事件响应,而不需要鼠标点击。hoverMoveEvent()函数会在鼠标指针进入或离开QGraphicsItem时被调用,并且当鼠标指针在QGraphicsItem上移动时,该函数也会被调用。
下面是一个示例代码,演示如何在QGraphicsItem中实现hoverMoveEvent()函数:
```python
from PyQt5 import QtCore, QtGui, QtWidgets
class MyItem(QtWidgets.QGraphicsItem):
def __init__(self):
super().__init__()
# 设置图元的矩形区域
self.rect = QtCore.QRectF(-50, -50, 100, 100)
# 设置鼠标悬停标志位
self.setAcceptHoverEvents(True)
def boundingRect(self):
return self.rect
def paint(self, painter, option, widget):
# 绘制图元的外观
painter.drawRect(self.rect)
def hoverMoveEvent(self, event):
# 处理鼠标移动事件
print('Mouse move:', event.pos())
if __name__ == '__main__':
app = QtWidgets.QApplication([])
scene = QtWidgets.QGraphicsScene()
view = QtWidgets.QGraphicsView(scene)
item = MyItem()
scene.addItem(item)
view.show()
app.exec_()
```
在这个示例代码中,我们创建了一个MyItem类,它继承自QGraphicsItem类,并实现了hoverMoveEvent()函数。在该函数中,我们打印了鼠标移动时的位置信息。在MyItem类的构造函数中,我们使用setAcceptHoverEvents(True)函数来启用鼠标悬停事件。
最后,我们创建了一个QGraphicsView视图对象,并将MyItem对象添加到了QGraphicsScene场景中。当我们运行程序并将鼠标指针移动到MyItem图元上时,控制台会输出鼠标移动的位置信息。
阅读全文