黄沙百战穿金甲,不破楼兰终不还。这篇文章主要讲述Qt for Android 开发大坑相关的知识,希望能为你提供帮助。
Qt for android 开发大坑
作者: qyvlik这里说一说比較常见的 Qt 开发安卓的大坑。
Qt 5.5.1
希望同学们不要做无谓的挣扎,跳过这些坑。
输入框首当其冲的是输入框,Qt 的输入在安卓上表现不佳.
- 无法支持安卓原生的输入法訪问 Qt 的输入框。就是安卓输入法无法复制,粘贴,剪切 Qt 输入框中的文本。
- 无法支持使用触摸的方式选中 Qt 输入框中的文字。
- 假设输入框的位置处于应用底部,相似于 IM 那种聊天工具,应当注意。
a. 假设应用Activity
设置为android:windowSoftInputMode="adjustResize"
,弹出输入法时。应用界面就会进行缩放。这个时候。应用界面就会闪烁。
b. 假设应用Activity
设置为android:windowSoftInputMode="adjustPan"
,应用界面的头部就会被顶出屏幕。
- 为了修复上诉的问题,參照例如以下步骤
a. 先设置应用Activity
设置为android:windowSoftInputMode="adjustPan"
,这样。弹出输入法时,就不由于界面缩放而闪烁。
b. 获取到安卓输入法高度。
c. 改动输入框,使其被点击获取焦点之前,先弹出输入法(Qt.inputMethod.show()
),由于不是输入框获取焦点而弹出输入发。所以界面既不会闪烁,也不会相对屏幕向上位移。(就是在TextField
上放一个MouseArea
)
d. 在输入法弹出后,就能够获取键盘高度(假设在安卓上获取键盘高度,是须要写一些 java 代码的)。
e.获取到键盘高度后,直接位移输入框(延时处理),然后forceActiveFocus
强制获取焦点。
- 上诉解决方式又引发一个问题,且听我细细道来。
a. 首先Qt.inputMethod.show()
在安卓上能够直接显示键盘。然后显示时不会直接缩放界面(造成闪烁)或者将界面顶出屏幕。
【Qt for Android 开发大坑】b. 接着,输入框是一个特殊的控件。在输入框获取虚拟键的焦点后。安卓上的输入法会直接记住这个控件的位置。
c. 再下一次直接调用Qt.inputMethod.show()
时。会找到上一次获取焦点的输入框的位置,依据这个位置,弹出虚拟键破并将界面顶出屏幕。然后输入框才会拿到键盘高度。位移。
- 为了再解决上诉的问题。还得记录下安卓上键盘的高度,然后依据键盘高度决定先使用
Qt.inputMethod.show()
弹出键盘,还是先位移输入框。
TODO
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 的使用问题。
推荐阅读
- 我的Android进阶之旅------>MIME类型大全
- POJ 3321 Apple Tree
- 获取指定类上的@RequestMapping注解的请求信息
- 在android中画圆形图片的几种办法
- Android 勤用RXJava compose操作符消除重复代码
- Android使用token维持登陆状态的方法
- Qt For Android 开发环境配置
- Android开发-新建线程崩溃
- office2007默认保存文件格式的更改办法_其它办公