Qt场景项目模型中的事件处理顺序

时间:2018-04-15 20:59:39

标签: qt qgraphicsitem qobject qevent

我自定义了我自己的项目,它继承自QGraphicsItem,重写了mousePressEvent函数,然后我将它添加到QGraphicScene中。

当我调试时,我将鼠标移动到我的项目上,然后按下,我发现首先调用QGraphicScene的事件处理函数(我在QGraphicScene上安装了一个事件处理过滤器),然后调用我的自定义项的mousePressEvent,是这是正确的吗?

如何使我的自定义项目早于接收器而不是QGraphicScene?

1 个答案:

答案 0 :(得分:0)

您描述的行为是正确的,并且是设计的。该项目永远不会在场景之前收到该事件;毕竟,现场的工作是将事件路由到正确的项目。场景维护项目的空间索引并使用它来路由事件。你可以做的是过滤项目本身的事件,而不是场景:使用QGraphicsItem::installSceneEventFilter