我有QML 2.0中的项目列表,我只想在鼠标位于黑色鼠标区域内时显示项目的上下文菜单(图中的红色框)。上下文菜单包含几个按钮,每个按钮都有自己的museArea。在QtQuick 1.0中它按预期工作,但在2.0中没有。当我在小红框(上下文菜单的项目)之间移动光标时,调用黑色MouseArea :: onExited(并且不显示上下文菜单)。它看起来像小红色鼠标区覆盖了较大的黑色鼠标区。如果我设置:
z: 10
在黑色mouseArea中,当光标位于小红框上方时,不会调用onExited,但我无法使用小鼠标悬停效果。当光标位于红色框上方时,我应该怎么做才能访问小红框的鼠标区并同时不调用黑色mouseArea :: onExited?
答案 0 :(得分:2)
如果
MouseArea
与其他MouseArea
项的区域重叠, 您可以选择宣传clicked
,doubleClicked
和 通过设置将pressAndHold
个事件发送到这些其他项目 propagateComposedEvents
到true
并拒绝应该发生的事件 传播。请参阅propagateComposedEvents文档 的信息。
答案 1 :(得分:2)
您可以启用悬停并检查 containsMouse 属性,而不是依赖mouseArea onExited 和 onEntered 事件。这是一个工作示例(QtQuick 2.0):
Column
{
spacing: 10
Repeater
{
model:4
Rectangle
{
height: 100
width: parent.width
border.color: "black"
MouseArea
{
id: mouseArea
anchors.fill: parent
hoverEnabled: true
}
Rectangle
{
visible: mouseArea.containsMouse
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.margins: 20
width: 200
border.color: "red"
Rectangle
{
anchors.centerIn: parent
color: "purple"
width: 20
height: 20
MouseArea
{
anchors.fill: parent
onClicked: print("clicked")
}
}
}
}
}
}