这篇文章要基于前面的基础,我们才能继续下面的内容,建议阅读。
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,如下:
现在构建你的APK并运行,按下 back 键看看效果吧
案例中只展示了监听返回键,其实我们可以通过自定义Activity干很多事情,比如屏幕信息的获取,Activity的一些设置等等。
总结以上是内存溢出为你收集整理的Qt for Android(八) —— QT 监听 Android 的返回键,或者其他Activity 事件全部内容,希望文章能够帮你解决Qt for Android(八) —— QT 监听 Android 的返回键,或者其他Activity 事件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)