让QGraphicsItem接收所有鼠标移动事件?

3

我有一个QGraphicsItem的子类。默认情况下,只有当指针在项的boundingRect内且已经发生了鼠标按下事件时,QGraphicsItem才会接收到mouseMoveEvents。

我希望这个子类可以接收QGraphicsScene中发生的所有mouseMoveEvents(最好是以项坐标的形式)。这可能吗?

1个回答

3
是的。您可以使用 QGraphicsItem::grabMouse() 来确保获取所有鼠标事件。如果这样做,那么 Qt 承诺以下内容
此项将接收场景中的所有鼠标事件,直到发生以下任何事件:
  • 该项变得不可见
  • 该项从场景中移除
  • 该项被删除
  • 该项调用 ungrabMouse()
  • 另一项调用 grabMouse();当另一项调用 ungrabMouse() 时,该项将重新获得鼠标抓取。

有没有办法让多个QGraphicsItem同时接收mousemove事件? - Daniel
没有更多的细节,我无法说出最好的方法是什么。你现在尝试的方法听起来越来越像是hacky,也许你应该退一步,询问一个关于你最终想要实现的目标的新问题。 - cgmb
基本上,我想要一堆自主代理类型的东西,它们会根据鼠标指针的位置做出反应。 - Daniel
我会创建QGraphicsScene子类,重新实现QGraphicsScene:mouseMoveEvent来按您要求进行分派。 - cgmb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接