QGraphicsItem - Follow Mouse Pointer

I am stuck on how to approach this. I have a QGraphicsItem inside a scene and I am passing the hover event from the scene to this child. While a move event is happening (I just use mouseMoveEvent with mouse tracking), I want another QGraphicsItem to follow the cursor.

I don't need collision detection, drag and drop, etc. Just the element that follows the cursor. The only two ways I can think of are ...

  • While the mouse is moving, draw a new QGraphicsItem at the mouse position. I need to clear the scene, redraw everything and draw a new position on top.
  • Somehow use an animation frame and whenever the mouse moves, animate the QGraphicsItem to jump to the new mouse position in 1 millisecond.

I might have either rethought this or didn't know of another way to do this ... any suggestions?

+3


source to share


1 answer


I did it like this:

  • Create a GraphicsItem cursor

    to be moved with the mouse pointer and store its pointer somewhere (for example, in a subclass of a scene. I have a toolbox, so for me it is in one of these tools)
  • Set your Z-value ( QGraphicsItem::setZValue

    ) so that the cursor is painted over all other elements in your scene.
  • Track events QGraphicsScene::mouseMoveEvent

    , forward those events to the pointer, cursor

    and update the position of the position


what he. I think this matches your solution 1, except that you don't need to clear the scene thanks to the z-value function.

+3


source







All Articles