QGraphicsItem 接收所有鼠标移动吗?

问题描述 投票:0回答:1

我有一个 QGraphicsItem 的子类。默认情况下,如果指针位于项目的boundingRect内并且也发生了mousePressEvent,则QGraphicsItem仅接收mouseMoveEvents。

我希望这个子类接收它所属的 QGraphicsScene 中发生的所有 mouseMoveEvents(最好在项目坐标中)。这可能吗?

python qt pyqt pyside
1个回答
3
投票

是的。您可以使用

QGraphicsItem::grabMouse()
确保获取所有鼠标事件。如果您这样做,那么 Qt 承诺以下

该项目将接收场景的所有鼠标事件,直到任何 发生以下事件:

  • 该物品变得不可见
  • 该项目已从场景中移除
  • 该项目已被删除
  • 该项目调用ungrabMouse()
  • 另一个项目调用grabMouse();当其他项目调用 ungrabMouse() 时,该项目将重新获得鼠标抓取。
© www.soinside.com 2019 - 2024. All rights reserved.