跟踪QGraphicsItem上的鼠标位置

1 投票
1 回答
948 浏览
提问于 2025-04-28 05:51

我有一个继承自 QGraphicsItem 的子类,我想在鼠标悬停在这个项目上时,跟踪鼠标的位置,并且这个位置要相对于 QGraphicsItem 来说。对于 QWidget(使用 QWidget.setMouseTracking)和 QMainWindow(通过安装事件过滤器),我知道怎么处理,但我不知道怎么在 QGraphicsItem 上做到这一点。鼠标移动事件只有在鼠标按下时才会触发,但我并不想要这样。我希望在鼠标悬停在 QGraphicsItem 上时就能触发。请给我一些建议。

暂无标签

1 个回答

0

你需要使用 my_item.setAcceptHoverEvents(True) 这个命令来让鼠标移动事件生效,而不需要先点击鼠标。

需要注意的是,这样做不会触发 mouseMoveEvent,而是会触发 hoverMoveEvent(当你把鼠标移到 QGraphicsItem 上或者离开时,还会分别触发 hoverEnterEventhoverLeaveEvent)。所以你要确保在你自己创建的 QGraphicsItem 子类中重写这个方法。

撰写回答