将MouseArea事件从父级传播到子级



我有一个全局MouseAreamouseAreaRoot占据整个屏幕,以防止在弹出窗口打开时对特定按钮执行操作。

在这个全局MouseArea下面的QML对象中,我有一个嵌套的MouseArea嵌套菜单鼠标区域来处理菜单上的单击。

问题是,当我单击菜单时,鼠标事件会重定向到mouseAreaRoot,而不是nestedMenuMouseArea。这是人们所期望的行为,因为全局MouseArea覆盖了整个屏幕。

我想将nestedMenuMouseArea排除在mouseAreaRoot的影响之外,该影响会阻止对其他QML对象执行任何操作。

我读过propagateComposedEvents属性,但它似乎只适用于从子级到父级

我希望相反:从mouseAreaRoot检测点击nestedMenuMouseArea并将事件分派给它,以触发其onClicked代码。

由于这里没有代码,我们无法找到可视化的堆叠顺序。

完整的鼠标区域事件传播基于您的视觉堆叠顺序。

如果A是父项,B和C是A的子项,D和E是C的子项。。。

类似于:

A{
B{}
C{
D{}
E{}
}
}

粗略的视觉堆叠顺序是(如果Z值不是专门指定的(,

E D C B A.

因此,鼠标区域事件传播,从E开始,到达A。

除非某些鼠标区域的enabled属性专门设置为false。

所以,首先也是最重要的一件事,你必须寻找…你的QML父母和孩子是如何安排的。

接下来是检查鼠标区域的enabled是否为false。

接下来,就像"folibs"在评论中所说的那样,确保将MouseEvent.acceptedpropagateComposedEvents: true一起设置为false

相关内容

  • 没有找到相关文章

最新更新