【问题标题】:Qt Event process order in scene items model场景项目模型中的Qt事件处理顺序
【发布时间】:2018-09-25 13:39:47
【问题描述】:

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

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

如何让我的自定义项目比 QGraphicScene 更早接收?

【问题讨论】:

  • 你为什么要这个?
  • 有时候拖动item的时候,场景也被拖动移动

标签: qt qgraphicsitem qobject qevent


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多