我正试图在QML中的矩形中使用Mouserea。我被按下、被选中、被双击和被更改位置。
但是,QML不接收onReleased事件。你们能告诉我,为什么它不起作用?我下面的代码:
Rectangle {
width: parent.width
height: 500
MouseArea {
id: mouseArea
anchors.fill: parent
hoverEnabled: true
preventStealing: true
onPositionChanged: {
// console.log("onPositionChanged mouse X", mouse.x)
// console.log("onPositionChanged mouse Y", mouse.y)
mouse.accepted = false;
}
onClicked:{
console.log("onClicked mouse X", mouse.x)
console.log("onClicked mouse Y", mouse.y)
mouse.accepted = false;
}
onDoubleClicked:{
console.log("onDoubleClicked mouse X", mouse.x)
console.log("onDoubleClicked mouse Y", mouse.y)
mouse.accepted = false;
}
onExited:{
console.log("onExited")
}
onPressAndHold:{
console.log("onPressAndHold mouse X", mouse.x)
console.log("onPressAndHold mouse Y", mouse.y)
mouse.accepted = false;
}
onPressed:{
console.log("onPressed mouse X", mouse.x)
console.log("onPressed mouse Y", mouse.y)
mouse.accepted = false;
}
onReleased:{
console.log("onReleased mouse X", mouse.x)
console.log("onReleased mouse Y", mouse.y)
mouse.accepted = false;
}
onCanceled:{
console.log("onCanceled mouse X", mouse.x)
console.log("onCanceled mouse Y", mouse.y)
mouse.accepted = false;
}
}
}
如果您附加了一个onPressed处理程序来清除mouse.accepted,MouseArea会假设如果您对按下不感兴趣,那么您对任何后续的相关信号都不感兴趣。因此,它不会发出点击、按住或释放。另一方面,如果将mouse.accepted设置为空,则其他较低的MouseArea对象将看不到任何消息。不幸的是,这使得无法监控由较低MouseArea处理的所有信号。
根据本文档中的事件行为。
处理此信号时,更改鼠标参数的可接受属性没有任何效果。
因此,如果您对上面代码中的mouse.accepted = false;
行进行注释,它将不起作用。
下方的工作代码
MouseArea {
id: mouseArea
anchors.fill: parent
hoverEnabled: true
preventStealing: true
onReleased:{
console.log("onReleased mouse X", mouse.x)
console.log("onReleased mouse Y", mouse.y)
}
}