我有一个全局MouseArea
mouseAreaRoot ,它会占用整个屏幕,以防止在打开弹出窗口时对特定按钮进行操作。
在此全局QML
下的MouseArea
个对象中,我有一个嵌套的MouseArea
nestedMenuMouseArea 处理菜单上的单击。
问题是当我单击菜单时,鼠标事件被重定向到mouseAreaRoot
而不是nestedMenuMouseArea
。这是人们期望的行为,因为全局MouseArea
覆盖了整个屏幕。
我想从 mouseAreaRoot 的效果中排除 nestedMenuMouseArea ,以防止对其他QML
对象执行任何操作。
我了解了propagateComposedEvents属性,但似乎只在孩子到父母之间起作用。
我想相反:从 mouseAreaRoot 中检测到对 nestedMenuMouseArea 的点击,然后将事件发送给它,以触发其onClicked
代码。
答案 0 :(得分:0)
因为这里没有代码,所以我们找不到可视的堆叠顺序。
鼠标区域事件的完整传播取决于您的视觉堆叠顺序。
如果A是父项,则B和C是A的孩子,D和E是C的孩子...
类似的东西:
A{
B{}
C{
D{}
E{}
}
}
粗略的视觉堆叠顺序为(如果未专门指定Z值),
E D C B A.
因此,鼠标区域事件的传播从E到A。
除非某些鼠标区域的enabled
属性专门设置为false。
因此,您首先要寻找的最重要的事情是.... QML亲子的排列方式。
接下来是检查鼠标区域enabled
是否为假。
然后下一个类似“ folibs”的评论,请确保您将MouseEvent.accepted
与propagateComposedEvents: true
一起设置为false