Qt for Android 开发大坑
Qt for Android 开发大坑
作者: qyvlik
Qt 5.5.1
这里说一说比較常见的 Qt 开发安卓的大坑。
希望同学们不要做无谓的挣扎,跳过这些坑。
输入框
首当其冲的是输入框,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()
在安卓上能够直接显示键盘。然后显示时不会直接缩放界面(造成闪烁)或者将界面顶出屏幕。b. 接着,输入框是一个特殊的控件。在输入框获取虚拟键的焦点后。安卓上的输入法会直接记住这个控件的位置。
c. 再下一次直接调用
Qt.inputMethod.show()
时。会找到上一次获取焦点的输入框的位置,依据这个位置,弹出虚拟键破并将界面顶出屏幕。然后输入框才会拿到键盘高度。位移。为了再解决上诉的问题。还得记录下安卓上键盘的高度,然后依据键盘高度决定先使用
Qt.inputMethod.show()
弹出键盘,还是先位移输入框。TODO
已经具现化的解决方式GDPURJYFS/WellChat,演示视频安卓修复键盘弹出界面不友善问题修复终版Demo。当然如今这些方案都有各种各样的问题,详细要做的。事实上是希望官方修复键盘弹出,界面缩放时闪烁的这个问题。
摄像头
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 等几个国外的地图插件。百度地图仅仅能自己去封装插件。
Qt for Android 开发大坑的更多相关文章
- Qt for Android 开发大坑123
http://blog.csdn.net/qyvlik/article/details/50989685 http://blog.csdn.net/qyvlik/article/details/515 ...
- Qt for Android开发环境搭建及测试过程记录
最近学习了Qt的QML编程技术,感觉相较于以前的QtGUI来说更方便一些,使用QML可以将界面与业务逻辑解耦,便于开发. QML支持跨平台,包括支持Android平台,因此可以使用Qt的QML进行An ...
- Qt For Android 开发环境配置
想了想,还是再写一篇关于Qt for Android开发环境配置的教程. 准备:Java jdk,Android sdk,Android adb,Android ndk,Android ant,Qt ...
- Qt for Android开发Android应用时的各种错误汇总(此片博文不成熟,请大家略过)
“Qt for Android真的很脆弱,项目能跑起来靠的是奇迹,跑不起来,各种报错才是正常...” 问题一:Qt for Android编译不过:make (e=2): 系统找不到指定的文件. 之前 ...
- Qt for Android开发入门
1. Qt for Android环境搭建 1.1 打包需要的工具 1.2 JDK安装 如果之前配置过,就可以跳过这一步. 下载java jdk 64:java jdk 1.8 x64 ...
- QT on Android开发
1.安装QT 2.安装JDK 配置如下系统环境变量: JAVA_HOME D:\Java\jdk Path %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin CLASSPATH ...
- Qt for Android开发总结
近段时间,本人使用Qt5.3.0开发了Android应用,由于官方资料较少,在此记录开发过程遇到的问题及解决方法 1.Android平台的视频播放,只能使用qml的MediaPlayer 2.qml中 ...
- Android开发 大坑Fragment
是不是弄了半天你的Fragment老是Replace不了,我的原因是:弄成静 态的,然后要动态Replace,竟然不行,后来框个FragmentLayout,改成全动态添加和Replace,OK了.
- QT 5.1.1 for Android 开发环境搭建与配置【Windows 7】
前言:本人操作系统为Windows7 64位,用的是32位的安装包,32位系统没有验证. 一.首先下载以下安装包,如果提供的链接失效请自行下载: (1) Android SDK (Windows 32 ...
随机推荐
- 【BZOJ 3262】 3262: 陌上花开 (CDQ分治)
3262: 陌上花开 Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A ...
- python debug open_files
主要是遇到 Error 24, too many open files. 下面这种方法可以debug打开了哪些文件. import __builtin__ openfiles = set() oldf ...
- bzoj 1650: [Usaco2006 Dec]River Hopscotch 跳石子
1650: [Usaco2006 Dec]River Hopscotch 跳石子 Time Limit: 5 Sec Memory Limit: 64 MB Description Every ye ...
- AIM Tech Round (Div. 1) D. Birthday 数学 暴力
D. Birthday 题目连接: http://www.codeforces.com/contest/623/problem/D Description A MIPT student named M ...
- Educational Codeforces Round 8 C. Bear and String Distance 贪心
C. Bear and String Distance 题目连接: http://www.codeforces.com/contest/628/problem/C Description Limak ...
- ThinkPad X240 禁掉触摸板
控制面板 --> 鼠标 --> Thinkpad
- 如何使用Less?
LESS是动态样式语言,赋予CSS动态语言的特性,如变量.继承.运算.函数,使得CSS更方便编写与维护.>>官网 less @color:#ff0000; body{color:@colo ...
- OpenLayers2中的事件_以Popup为例
SATURDAY, 21 MARCH 1-Preface 前几天阅读学习了OpenLayers'Cookbook中的第四章——Working with events. 从AFDS系统的开发项目进行至今 ...
- easyui combobox可编辑的情况下,只能首字母开始过滤的问题选项
esayui中的combobox下拉列表在可编辑的情况下可以输入内容来过滤下拉框的选项,而1.4.2版本只能在从首字母开始过滤例如其中一个选项是"test", 只能输入" ...
- 安装Python3.6.x
#安装依赖包 yum install zlib-devel bzip2-devel openssl-devel ncurses-devel -y #下载Python3.6.x wget https:/ ...