我在QML2.0中有项目列表,只有当鼠标在黑色mouseArea中时,我才想显示项目的上下文菜单(图片中的红色框)。上下文菜单包含几个按钮,每个按钮都有自己的museArea。在QtQuick 1.0中,它可以像预期的那样工作,但在2.0中不行。当我在红色小框(上下文菜单项)之间移动光标时,黑色MouseArea::onExited被调用(并且没有显示上下文菜单)。它看起来像小红老鼠覆盖了更大的,黑色的鼠标区域。如果我设置:
z: 10在黑色mouseArea中,当光标位于小红框上方时,onExited不会被调用,但是我不能使用小鼠标悬停效果。我应该怎么做才能访问小红盒子的鼠标区域,同时不调用黑色鼠标when::onExited,当光标位于红色方框之上?

发布于 2014-10-06 08:34:33
不必依赖mouseArea onExited和onEntered事件,您可以启用悬停并检查containsMouse属性。下面是一个工作示例(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")
}
}
}
}
}
}发布于 2014-10-06 07:20:29
如果
MouseArea与其他MouseArea项的区域重叠,则可以通过将propagateComposedEvents设置为true并拒绝应该传播的事件,将clicked、doubleClicked和pressAndHold事件传播到这些其他项。有关详细信息,请参阅propagateComposedEvents文档。
来源
https://stackoverflow.com/questions/26210991
复制相似问题