Qml 将MouseArea事件从父级传播到子级
我有一个全局的Qml 将MouseArea事件从父级传播到子级,qml,mousearea,Qml,Mousearea,我有一个全局的MouseAreamouseareaot,它占据整个屏幕,以防止在打开弹出窗口时对特定按钮执行操作 在这个全局MouseArea下面的QML对象中,我有一个嵌套的MouseAreanestedMenuouse区域来处理我菜单上的点击 问题是,当我单击菜单时,鼠标事件被重定向到mouseareaoot,而不是nestedMenuMouseArea。这是人们所期望的行为,因为全局MouseArea覆盖了整个屏幕 我想将NestedEnumouseArea排除在MouseAreaoot的
MouseArea
mouseareaot,它占据整个屏幕,以防止在打开弹出窗口时对特定按钮执行操作
在这个全局MouseArea
下面的QML
对象中,我有一个嵌套的MouseArea
nestedMenuouse区域来处理我菜单上的点击
问题是,当我单击菜单时,鼠标事件被重定向到mouseareaoot
,而不是nestedMenuMouseArea
。这是人们所期望的行为,因为全局MouseArea
覆盖了整个屏幕
我想将NestedEnumouseArea排除在MouseAreaoot的影响之外,MouseAreaoot会阻止对其他QML
对象执行任何操作
我读过关于该属性的文章,但它似乎只在孩子和父母之间起作用
我想要的是相反的:从mouseareaoot检测对NestedEnumouseArea的单击,并将事件发送给它,以便在单击代码时触发其
。由于此处没有代码,我们无法找到可视的堆叠顺序
完整的鼠标区域事件传播基于您的视觉堆叠顺序
如果A是父项,B和C是A的子项,D和E是C的子项
比如:
A{
B{}
C{
D{}
E{}
}
}
粗略的视觉堆叠顺序为(如果未专门指定Z值)
所以鼠标区域事件传播,从E开始,到达A
除非某些鼠标区域的enabled
属性专门设置为false
所以首先也是最重要的是你要寻找的是。。。。如何安排您的QML父子关系
接下来是检查鼠标区域的enabled
是否为false
接下来,如评论中所说的“folibs”,请确保您将MouseEvent.accepted
与propagateComposedEvents:true一起设置为false
请提供,而不是解释您的代码。至于您的问题,您应该将其与设置为false
E D C B A.