【发布时间】:2014-09-22 07:24:56
【问题描述】:
我正在使用 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 上的后退按钮时,应用程序被关闭,它甚至不会在日志中打印“后退”。有什么建议我在这里做错了吗?
提前致谢。
【问题讨论】:
-
是的,它不起作用我也尝试了所有方法,如果您有任何提示,请告诉我
-
JNI_OnLoad 知道了。当我们使用 QApplicationengine 从 main.cpp 加载 main.qml 时,问题就出现了。而不是使用 QQuickview 来加载 main.qml 文件。
-
不是我的情况,因为我使用 QQuickView 加载 main.qml 我猜我的应用程序中也缺少一些东西
-
你在哪里处理后退按钮事件??在 qml 或 cpp 中??
-
在 qml 中,在我从堆栈视图推送的组件中
标签: android qt qml qt5 qtquick2