我已经面对下一个情况:
我有一个带有Mousearea的物品。这是屏幕上的我的按钮 - 键盘。
- 我在键盘上强制按下按钮。
- 我不释放此按钮(持有)。
- 在Onpressed {}信号处理程序中,我正在打开另一个屏幕。
- 我来自键盘的Buton不再收到发布信号。
- 当我回到上一个键盘时 - 我的按钮仍然按下。
我尝试设置"按" = false,但这是ReadOnly属性。
我试图发出repares()信号,但它并未清楚"按'标志。但是我认为我以错误的方式做到了。函数释放采用参数 - mouseevent。鼠标参数提供有关点击的信息,包括单击的释放的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
}
}
如果有人帮助我解决这个问题,我会感到高兴!非常感谢!
至于我的工作原理:
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