Android后退按钮不会触发keys.onreleased qml

我正在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.accepted = false
}

通过这个处理程序,您可以轻松管理Android设备的后退按钮.它不需要任何额外的许可.例如,假设您有一个StackView来管理GUI.您可以编写这些代码行,然后您的应用程序就像本机Android应用程序一样:

onClosing: {
        if(stack.depth > 1){
            close.accepted = false
            stack.pop();
        }else{
            return;
        }
    }

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...