0

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

调试的时候,我把鼠标移到我的item上,然后按下去,发现先调用了QGraphicScene的事件处理函数(我在QGraphicScene上安装了一个事件处理过滤器),然后调用了我自定义item的mousePressEvent,这样对吗?

我怎样才能让我的自定义项目比 QGraphicScene 更早接收?

4

1 回答 1

0

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

于 2018-04-16T07:58:32.263 回答