【发布时间】:2017-03-14 15:45:43
【问题描述】:
我遇到了下一种情况:
我有一个带有 MouseArea 的项目。这是我在屏幕上的按钮 - 键盘。
- 我要长按键盘上的按钮。
- 我没有松开这个按钮(按住它)。
- 在 onPressed{} 信号处理程序中,我正在打开另一个屏幕。
- 我的键盘按钮不再收到释放信号。
- 当我回到前一个键盘时 - 我的按钮仍然按下。
我尝试设置“pressed”=false,但这是只读属性。
我尝试发出released() 信号,但它没有清除“按下”标志。 但我认为我做错了。函数释放采用参数-鼠标-鼠标事件。 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
}
}
如果有人帮我解决这个问题,我会很高兴! 非常感谢!
【问题讨论】:
-
我无法遵循您的代码。你能把它改成mvce好吗?所以包括
onPressed和所有其他必要的东西,运行它,看看你的问题。因为正如@folibis 所示,它有效。所以错误一定发生在其他地方。