2

QGraphicsItem のサブクラスがあります。デフォルトでは、ポインタがアイテムのboundingRect内にあり、かつmousePressEventも発生した場合、QGraphicsItemはmouseMoveEventsのみを受け取ります。

このサブクラスが、メンバーである QGraphicsScene 内で発生するすべての mouseMoveEvents を受け取るようにします (できればアイテム座標で)。これは可能ですか?

4

1 に答える 1

3

はい。を使用QGraphicsItem::grabMouse()して、すべてのマウス イベントを確実に取得できます。そうする場合、Qt は次のことを約束します

このアイテムは、次のイベントのいずれかが発生するまで、シーンのすべてのマウス イベントを受け取ります。

  • アイテムが見えなくなる
  • アイテムはシーンから削除されます
  • アイテムが削除されます
  • アイテム呼び出し ungrabMouse()
  • 別のアイテムは、grabMouse(); を呼び出します。他のアイテムが ungrabMouse() を呼び出すと、アイテムはマウス グラブを取り戻します。
于 2012-07-16T22:16:17.833 に答える