让QGraphicsItem接收所有鼠标移动?

时间:2012-07-16 20:38:05

标签: python qt pyqt pyside

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

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

1 个答案:

答案 0 :(得分:3)

是。您可以使用QGraphicsItem::grabMouse()确保获得所有鼠标事件。如果您这样做,那么Qt promises the following

  

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

     
      
  • 该项目变为不可见
  •   
  • 该项目已从场景中删除
  •   
  • 该项目已删除
  •   
  • 项目调用ungrabMouse()
  •   
  • 另一项调用grabMouse();当其他项目调用ungrabMouse()时,该项目将重新获得鼠标抓取。
  •