我正在Qt5.3和Qtquick2.1中创建一个程序.我试图使用Keys.onReleased在我的代码中捕获按钮上的按钮.但是这个事件没有被触发.此外,我已将项目焦点设置为true.但仍然没有成功.这是代码示例
import QtQuick 2.1 import QtQuick.Controls 1.2 import QtQuick.Controls.Styles 1.2 import QtQuick.Layouts 1.1 import QtQuick.Window 2.1 Rectangle { id: main2 focus: true width: Screen.Width height: Screen.Height Keys.enabled: true Keys.priority: Keys.BeforeItem property string load_page: "" signal deskConnected() Loader{ id: pageloader anchors.fill: parent source: "qrc:/qml/resources/Firstpage.qml" } onDeskConnected: { pageloader.item.onDeskConnected() } function loadPatwin(){ pageloader.source = "qrc:/qml/resources/Secondpage.qml"; } Keys.onReleased: { console.log("back"); if (event.key === Qt.Key_Back) { event.accepted=true; } } }
这里loadPatwin是在按下某个其他qml中定义的按钮时调用的函数.并加载一个新的qml.但在那之后,当我按下Android上的后退按钮时,应用程序将关闭,它甚至不会在日志中“打印”.我在这里做错了什么建议?
提前致谢.
解决方法
在qt quick(Qt5.1及更高版本)中,applicationwindow和Window都有一个关闭信号,当用户触摸android中的后退按钮时会发出该信号.
您可以简单地实现onClosing处理程序并将close参数设置为false.这是怎么做的:
您可以简单地实现onClosing处理程序并将close参数设置为false.这是怎么做的:
onClosing: { close.accepted = false }
通过这个处理程序,您可以轻松管理Android设备的后退按钮.它不需要任何额外的许可.例如,假设您有一个StackView来管理GUI.您可以编写这些代码行,然后您的应用程序就像本机Android应用程序一样:
onClosing: { if(stack.depth > 1){ close.accepted = false stack.pop(); }else{ return; } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。