gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:23:33 25 4
gpt4 key购买 nike

我正在用 Qt5.3 和 Qtquick2.1 创建一个程序。我正在尝试使用 Keys.onReleased 在我的代码中捕获 android 上的后退按钮按下。但是那个事件没有被触发。此外,我已将项目焦点设置为 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 及更高版本)中,ApplicationWindowWindow 都有一个 closing 信号,当用户触摸android中的后退按钮。您可以简单地实现一个 onClosing 处理程序并将关闭参数设置为 false。方法如下:

onClosing: {
close.accepted = false
}

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

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

关于Android后退按钮按下不会触发keys.onreleased qml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25968661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com