我遇到了下一种情况:
我有一个带有MouseArea的项目。这是我在屏幕上的按钮 - 键盘。
我试图设置“pressed”= false,但这只是readonly属性。
我试图发出release()信号,但它没有清除“按下”标志。 但我认为我是以错误的方式做到的。函数发布需要参数 - mause - mouseEvent。 mouse参数提供有关单击的信息,包括单击发布的x和y位置以及是否保持单击。我没有找到如何正确设置它。
我尝试更新MouseArea,但没有帮助。
我不知道还有什么可以尝试取消“压制”旗帜。
我的鼠标区域很简单:
MouseArea {
id: mouseArea
property bool haveToRelease: false
onHaveToReleaseChanged: {
if(haveToRelease)
{
console.log("BaseButton.qml: call canceled()")
released()
haveToRelease = false
}
}
anchors.fill: parent
hoverEnabled: true
onReleased: {
console.log("BaseButton.qml: onReleased")
}
onPressedChanged: {
console.log("BaseButton.qml: onPressedChanged, pressed = ", pressed)
}
}
在我的按钮中,我有下一个处理程序:
onVisibleChanged: {
if(config.isToyota && !visible && pressed) {
console.log("Key.qml :: config.isToyota && !visible && pressed")
releaseButton = true
}
}
如果有人帮我解决这个问题,我会很高兴! 非常感谢!
答案 0 :(得分:1)
至于我按预期工作:
Window {
visible: true
width: 640
height: 480
Rectangle {
width: 100
height: 100
anchors.centerIn: parent
color: "orange"
MouseArea {
anchors.fill: parent
onPressed: {
console.log("pressed");
wnd.show();
released(mouse);
}
onReleased: {
console.log("released");
}
onPressedChanged: console.log("pressed: " + pressed );
}
}
Window {
id: wnd
width: 200
height: 200
}
}
输出:
qml: pressed
qml: released
qml: pressed: true
qml: pressed: false