相关疑难解决方法(0)

如何在使用Qt时阻止android中的后退键

如果有人在Android设备上按下后退键,我需要阻止应用程序退出,这样我就可以发送消息框询问用户是否要离开应用程序,我发现使用:

@Override
void MainWindow::onBackPressed()
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

我可以处理那个事件,我在我的必需品项目上尝试过它并没有用.qtkeyevent可以处理这个吗?还是有其他办法吗?

我使用这个阻止它:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
  if ( (keyCode == KeyEvent.KEYCODE_BACK) )
   {
     //moveTaskToBack(true); 
     return true;
   }
if (QtApplication.m_delegateObject != null && 
        QtApplication.onKeyDown != null)
   return (Boolean) 
QtApplication.invokeDelegateMethod(QtApplication.onKeyDown, keyCode, event);
   else
   return super.onKeyDown(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)

现在我需要在Qt上捕获事件,以便我发送消息

c++ qt android

6
推荐指数
1
解决办法
4489
查看次数

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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这里loadPatwin是在按下某个其他qml中定义的按钮时调用的函数.并加载一个新的qml.但在那之后,当我按下Android上的后退按钮时,应用程序将关闭,它甚至不会在日志中"打印".我在这里做错了什么建议?

提前致谢.

qt android qml qt5 qtquick2

6
推荐指数
3
解决办法
5163
查看次数

标签 统计

android ×2

qt ×2

c++ ×1

qml ×1

qt5 ×1

qtquick2 ×1