2

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

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

4

1 回答 1

3

是的。您可以使用它QGraphicsItem::grabMouse()来确保您获得所有鼠标事件。如果你这样做了,那么Qt 承诺如下

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

  • 该项目变得不可见
  • 该项目已从场景中移除
  • 项目已删除
  • 该项目调用 ungrabMouse()
  • 另一个项目调用grabMouse(); 当另一个项目调用 ungrabMouse() 时,该项目将重新获得鼠标抓取。
于 2012-07-16T22:16:17.833 回答