qt – 在QGraphicsScene类中跟踪鼠标移动

我将QGraphicsScene进行子类化,并添加了mouseMoveEvent方法来处理鼠标移动事件。我在GraphicsView之上创建了一个标尺,并且标尺跟踪鼠标移动。在QGraphicsScene :: mousemoveEvent中,我可以清楚地调用标尺小部件的mouseMoveEvent。目的是让尺子知道当前的鼠标位置。

现在,当我移动鼠标时,似乎没有调用QGraphicsScene :: mousemoveEvent。但是,如果我按住鼠标左键并按住按钮,可以让它工作。这不是我想看的;当我将鼠标放在视图上并移动鼠标时,我希望这个方法被调用。

有解决办法吗?

QGraphicsView文档所述,该视图负责将鼠标和键盘事件转换为场景事件并将其传播到现场:

You can interact with the items on the scene by using the mouse and keyboard. QGraphicsView translates the mouse and key events into scene events, (events that inherit QGraphicsSceneEvent,), and forward them to the visualized scene.

由于mouse move events仅在默认情况下按下按钮时才会发生,所以需要在视图上显示setMouseTracking(true),以便首先生成移动事件,以便将其转发到场景。
或者,如果您不需要翻译到场景坐标,则可以直接而不是在场景中重新实现视图中的mouseMoveEvent。但是在这种情况下,请确保在实现中调用基类QGraphicsView::mouseMoveEvent,以便适当地为场景中的项目生成悬停事件。

http://stackoverflow.com/questions/7772080/tracking-mouse-move-in-qgraphicsscene-class

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:qt – 在QGraphicsScene类中跟踪鼠标移动