【发布时间】:2015-11-16 12:56:32
【问题描述】:
根据Qt documentation on MouseArea,只有“组合”事件(例如单击)可以传播到 z 顺序较低的项目。
如何为简单的鼠标事件(例如 onEntered 或 onExited)复制相同的行为?
例如我有两个矩形,都有一个 MouseArea,上面的矩形覆盖了下面矩形的右下角。如果我单击任一矩形上的任意位置,包括重叠区域,两个矩形的 MouseAreas 都将收到onClicked 信号,因为我已使用propagateComposedEvents: true 并在upperRect 的处理程序中设置mouse.accepted = false。但是onEntered 仅适用于 lowerRect 的非重叠部分。
Rectangle {
id: lowerRect
x: 0
y: 0
width: 100
height: 100
color: "blue"
MouseArea {
anchors.fill: parent
onClicked: console.log("lowerRect was clicked")
hoverEnabled: true
onEntered: console.log("lowerRect was entered")
}
}
Rectangle {
id: upperRect
x: 50
y: 50
width: 50
height: 50
color: "green"
opacity: 0.8
MouseArea {
anchors.fill: parent
propagateComposedEvents: true
onClicked: {
mouse.accepted = false
console.log("upperRect was clicked")
}
hoverEnabled: true
onEntered: console.log("upperRect was entered")
}
}
【问题讨论】:
-
我知道这不是您正在寻找的,但您可以依靠信号。无论如何有点棘手,但你可以让它工作。
标签: qml