Qt for Android(八) —— QT 监听 Android 的返回键,或者其他Activity 事件

Qt for Android(八) —— QT 监听 Android 的返回键,或者其他Activity 事件,第1张

概述这篇文章要基于前面的基础,我们才能继续下面的内容,建议阅读。QtforAndroid(一)——QT中如何调用android方法QtforAndroid(二)——QT中调用自定义Android方法详细教程(获取Android设备的SN号)QtforAndroid(三)——QT中获取Android的Services,并调用需要Context参数

这篇文章要基于前面的基础,我们才能继续下面的内容,建议阅读。

Qt for Android(一) —— QT 中如何调用android方法
Qt for Android(二) —— QT 中调用自定义Android方法详细教程(获取Android设备的SN号)
Qt for Android(三) —— QT 中获取 Android 的Services,并调用需要Context参数的 c方法(设置音量、亮度等)

背景

QT 监听 AndroID设备的返回键有两种方式,一种是在 QT 层监听,第二种是在 AndroID代码中监听。既然有了第一种方案,为什么还要使用第二种方案?因为之前我们的项目碰到过我们的QT程序监听了back键,想退出进程,事件是监听到了,但是程序怎么都退不掉,因此才有了第二种方案。

方案一

在主 QWidget 中重写下面两个函数:

    virtual voID keyPressEvent(QKeyEvent *) overrIDe;                             virtual voID keyreleaseEvent(QKeyEvent *) overrIDe;
voID Widget::keyPressEvent(QKeyEvent *e){    switch(e->key())    {    case Qt::Key_Back:    {        qDeBUG() << "QHT Widget keyPressEvent::Key_Back";       e->accept();    }        break;    default:        QWidget::keyPressEvent(e);        break;    }}voID Widget::keyreleaseEvent(QKeyEvent *e){    switch(e->key())    {    case Qt::Key_Back:       {        qDeBUG() << "QHT Widget keyreleaseEvent::Key_Back";        e->accept();#endif        return;        }        break;    default:        QWidget::keyPressEvent(e);        break;    }}
方案二

方案二需要我们自定了一个 Activity,在 文章六中我提到了这个说法。有了这个自定义的Activity类,我们可以偷偷干很多事哦。

第一步:

基于文章二,在com.qht.test包下,新建一个TestActivity.java类,为了避免错误,可以在androID studio下建一个默认的 Activity 拿过来用。

然后在这个Activity中监听返回键,如下:

package com.qht.test;import androID.content.Context;import androID.os.Build;import androID.os.Bundle;import androID.vIEw.KeyEvent;public class TestActivity extends org.qtproject.qt5.androID.bindings.QtActivity {    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }    /**     * 监听Back键按下事件,方法2:     * 注意:     * 返回值表示:是否能完全处理该事件     * 在此处返回false,所以会继续传播该事件.     * 在具体项目中此处的返回值视情况而定.     */    @OverrIDe    public boolean onKeyDown(int keyCode, KeyEvent event) {        if ((keyCode == KeyEvent.KEYCODE_BACK)) {            System.out.println("按下了back键   onKeyDown() System.exit(0)");			System.exit(0);            return false;        }else {            return super.onKeyDown(keyCode, event);        }    }}

第二步:
打开AndroIDManifest.xml文件,修改我们要启动的Activity为我们新建的Activity,如下:


将上面红框的内容修改为:com.qht.test.TestActivity。

现在构建你的APK并运行,按下 back 键看看效果吧

案例中只展示了监听返回键,其实我们可以通过自定义Activity干很多事情,比如屏幕信息的获取,Activity的一些设置等等。

总结

以上是内存溢出为你收集整理的Qt for Android(八) —— QT 监听 Android 的返回键,或者其他Activity 事件全部内容,希望文章能够帮你解决Qt for Android(八) —— QT 监听 Android 的返回键,或者其他Activity 事件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1053861.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存