跟踪QGraphicsItem上的鼠标位置
我有一个继承自 QGraphicsItem
的子类,我想在鼠标悬停在这个项目上时,跟踪鼠标的位置,并且这个位置要相对于 QGraphicsItem
来说。对于 QWidget
(使用 QWidget.setMouseTracking
)和 QMainWindow
(通过安装事件过滤器),我知道怎么处理,但我不知道怎么在 QGraphicsItem
上做到这一点。鼠标移动事件只有在鼠标按下时才会触发,但我并不想要这样。我希望在鼠标悬停在 QGraphicsItem
上时就能触发。请给我一些建议。
1 个回答
0
你需要使用 my_item.setAcceptHoverEvents(True)
这个命令来让鼠标移动事件生效,而不需要先点击鼠标。
需要注意的是,这样做不会触发 mouseMoveEvent
,而是会触发 hoverMoveEvent
(当你把鼠标移到 QGraphicsItem
上或者离开时,还会分别触发 hoverEnterEvent
和 hoverLeaveEvent
)。所以你要确保在你自己创建的 QGraphicsItem
子类中重写这个方法。