我试图在QML中的矩形中使用Mousearea。我正在onPressed,OnCLicked,onDoubleClicked和onPositionChanged。
但是,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;
}
}
}
答案 0 :(得分:0)
在docs上写着 onRelease ,鼠标参数可提供有关点击的信息,包括点击释放的x和y位置,以及点击是否 onClicked 和 onPressAndHold 替换 onRelesed 信号。
答案 1 :(得分:0)
根据此docs中的事件行为。
处理此信号时,更改鼠标参数的接受属性无效。
因此,如果您在上面的代码中注释行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)
}
}
答案 2 :(得分:0)
如果您附加了一个清除mouse.accepted的onPressed处理程序,则MouseArea会假设您对新闻不感兴趣,那么您对随后的任何相关信号都不感兴趣,因此不会发出click,pressAndHold或发布。另一方面,如果保留mouse.accepted设置,则其他较低的MouseArea对象将看不到任何消息。不幸的是,这使得无法监视较低的MouseArea处理的所有信号。