Qt for Android 开发大坑

作者: qyvlik

Qt 5.5.1

这里说一说比較常见的 Qt 开发安卓的大坑。

希望同学们不要做无谓的挣扎,跳过这些坑。

输入框

首当其冲的是输入框,Qt 的输入在安卓上表现不佳.

  1. 无法支持安卓原生的输入法訪问 Qt 的输入框。就是安卓输入法无法复制,粘贴,剪切 Qt 输入框中的文本。

  2. 无法支持使用触摸的方式选中 Qt 输入框中的文字。

  3. 假设输入框的位置处于应用底部,相似于 IM 那种聊天工具,应当注意。

    a. 假设应用 Activity 设置为 android:windowSoftInputMode="adjustResize",弹出输入法时。应用界面就会进行缩放。这个时候。应用界面就会闪烁。

    b. 假设应用 Activity 设置为 android:windowSoftInputMode="adjustPan",应用界面的头部就会被顶出屏幕。

  4. 为了修复上诉的问题,參照例如以下步骤

    a. 先设置应用 Activity 设置为 android:windowSoftInputMode="adjustPan",这样。弹出输入法时,就不由于界面缩放而闪烁。

    b. 获取到安卓输入法高度。

    c. 改动输入框,使其被点击获取焦点之前,先弹出输入法(Qt.inputMethod.show()),由于不是输入框获取焦点而弹出输入发。所以界面既不会闪烁,也不会相对屏幕向上位移。(就是在 TextField 上放一个 MouseArea

    d. 在输入法弹出后,就能够获取键盘高度(假设在安卓上获取键盘高度,是须要写一些 Java 代码的)。

    e. 获取到键盘高度后,直接位移输入框(延时处理),然后 forceActiveFocus 强制获取焦点。

  5. 上诉解决方式又引发一个问题,且听我细细道来。

    a. 首先 Qt.inputMethod.show() 在安卓上能够直接显示键盘。然后显示时不会直接缩放界面(造成闪烁)或者将界面顶出屏幕。

    b. 接着,输入框是一个特殊的控件。在输入框获取虚拟键的焦点后。安卓上的输入法会直接记住这个控件的位置。

    c. 再下一次直接调用 Qt.inputMethod.show() 时。会找到上一次获取焦点的输入框的位置,依据这个位置,弹出虚拟键破并将界面顶出屏幕。然后输入框才会拿到键盘高度。位移。

  6. 为了再解决上诉的问题。还得记录下安卓上键盘的高度,然后依据键盘高度决定先使用 Qt.inputMethod.show() 弹出键盘,还是先位移输入框。

    TODO

已经具现化的解决方式GDPURJYFS/WellChat,演示视频安卓修复键盘弹出界面不友善问题修复终版Demo。当然如今这些方案都有各种各样的问题,详细要做的。事实上是希望官方修复键盘弹出,界面缩放时闪烁的这个问题。

Qt Android 键盘问题

摄像头

Qt 安卓应用上的摄像头。假设直接使用 QtMultimedia::Camera 可能会出现无法非常好对焦的情况,而且各个机型和不同版本号系统上表现不一致。华为手机对 Qt 的支持不佳,问题会略微多一些。

解决方法:

能够直接通过调用系统的摄像软件,详细參照QtAndroid详细解释(3):startActivity实战Android拍照功能,详细代码 A-week-to-develop-android-app-plan/demos/CallNativeCamera。

SplashScreen

启动屏,据多数 Qter 反映。Qt 安卓应用启动时。会显示一个无内容。带有标题和应用 Icon 的黑色画面。无法直接预先显示 SplashScreen。

本地多媒体缩略图

网络资源能够通过现有的 C++ 接口进行优化,缓存。

可是本地多媒体缩略图支持。须要自行构建一个好用的。

网页支持

Qt 对移动平台的网页支持,应该是试图通过在 QtSurface 上绘制原生网页进行支持,所以 Qt 的网页支持对于移动平台来说是非常孱弱的。然后 QtWebEngine 是基于谷歌的 Chromium 的,Chromium 如今对 VS 编译支持最好。Chromium 对 MinGW 的支持基本是没有的。

如今 Qt 在手机设备上,使用 QtWebView 也就是在 QtSurface 上绘制原生网页作为 Qt 在移动端上网页的解决方式。

本地化地图

QtQuick 中是支持地图插件的。可是官方仅仅是预制了 here 等几个国外的地图插件。百度地图仅仅能自己去封装插件。

相关讨论有关 QML QtLocation 的 Plugin 的使用问题。

转载于:https://www.cnblogs.com/gavanwanggw/p/7293805.html

Qt for Android 开发大坑相关推荐

  1. android qt 对比_Qt for Android 开发大坑

    Qt for Android 开发大坑 作者: qyvlik Qt 5.5.1 这里说一说比较常见的 Qt 开发安卓的大坑.希望同学们不要做无谓的挣扎,跳过这些坑. 输入框 首当其冲的是输入框,Qt ...

  2. qt for android开发百度地图(一步步带图详解)

    qt for android开发百度地图 前言:qt for android开发百度地图,其实找了很多资料,基本上没有,就自己折磨弄了出来,这个过程还是很曲折的,折磨了一两个星期,没有资料,就两个字' ...

  3. Qt for Android 开发环境配置

    原址:https://blog.csdn.net/yongheng0852/article/details/78875855 1. Qt编译器环境 ------1) Qt for Android环境安 ...

  4. Qt for Android开发环境搭建(QtCreator6.0.1+Qt5.15.2/Qt6.2.2+win10)

    前言 笔者很早就尝试使用Qt开发android程序,不得不承认,当前仍然比较小众.若是想一套代码的跨平台开发,或想要更高的执行效率,Qt值得一试 一.安装Qt 每个人需求不同,会安装不同版本的Qt,笔 ...

  5. Qt On Android开发环境安装、配置

    本文记录在Windows 8.1下,Qt on Android 5.5开发环境的安装和配置. 1.安装JDK 到甲骨文网站下载JDK:http://www.oracle.com 下载安装成功后,设置环 ...

  6. qt android安装在哪,Qt On Android开发环境安装、配置

    本文记录在Windows 8.1下,Qt on Android 5.5开发环境的安装和配置. 1.安装JDK 到甲骨文网站下载JDK:http://www.oracle.com 下载安装成功后,设置环 ...

  7. Qt for Android开发入门

    可以先根据这个网址https://blog.csdn.net/u013816798/article/details/86326306 基于Qt平台开发安卓应用 下载其收集到的软件 1.    Qt f ...

  8. Windows下Qt for Android开发之环境搭建

    文章目录 前言 一.准备工作 二.安装Qt及插件 1.安装Qt 2.安装JDK 3.安装SDK 4.安装NDK 5.配置Qt中的设置 6.第一个Android程序 1.创建工程 2.编写自己第一个An ...

  9. Qt 配置Android开发环境,及.apk软件发布方法

    Qt版本:5.14.1 1 准备安装资源 JDK SDK NDK 下载链接: 链接:https://pan.baidu.com/s/17AgHX0uW4ase2AKemP__VA  提取码:ojnd ...

最新文章

  1. Windows PE导出表编程2(重组导出表函数地址)
  2. golang break label 与goto label
  3. 9行代码满分 【C语言】 L1-062 幸运彩票 (15分)
  4. eclipse java工程目录_转载:Eclipse下的java工程目录
  5. 嵌入式Linux系统编程学习之三十四 Socket 编程
  6. double取两位小数_Java语言中:float、double数据类型在内存中是如何存储的
  7. 学习:配置hibernate
  8. gradle错误 dependency.systemPath‘ for com.alibaba:jconsole:jar must specify an absolute path
  9. mac关闭开机启动时的客人用户
  10. YCabPDF PDFView控件说明文档
  11. session和coolie的区别
  12. java is alphabetic,Java中的Character.isAlphabetic和Character.isLetter有什么区别?
  13. 2023年最新谷歌Google帐号Gmail邮箱账号怎么注册成功的方法与教程?
  14. 删除windows默认共享
  15. Word Averaging模型做文本分类 稳定效果好模型简单
  16. 微信的订阅号和服务号如何区分?
  17. 使用YOLOX进行物体检测
  18. EditPlus中文版下载
  19. Unity的Dots技术入门
  20. 一天让你成为PPT达人

热门文章

  1. android获取操作系统版本号,Android 获取手机的厂商、型号、Android系统版本号、IMEI、当前系统语言等工具类...
  2. 分段二次插值例题_分段三次插值
  3. c语言char转cstring,CString、TCHAR*、char*转换 | 时刻需
  4. 天津计算机的专科学校,天津市电子计算机职业中等专业学校
  5. redis 清空db下_PHP操作redis实现的分页列表
  6. linux内核 默认路由表,[Linux] linux路由表-Go语言中文社区
  7. php收购,php中文网收购全国用户量最大的phpstudy集成开发环境揭秘
  8. C语言(CED)编写一个程序,求两个字符之间的加减运算。
  9. 2014牡丹江网络赛ZOJPretty Poem(暴力枚举)
  10. docker gpu报错Error response from daemon: could not select device driver ““ with capabilities: [[gpu]]