Qt for Android 开发大坑

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/540801.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bca ac如何联合索引_BCA的完整形式是什么?

bca ac如何联合索引BCA:计算机应用学士学位 (BCA: Bachelor of Computer Applications) BCA is an abbreviation of Bachelor of Computer Applications. It is a three-year undergraduate program in Computer applications. It is considered equivalent to B.Te…

path r'c test.html',robot framework - robot命令参数解析

robot 命令参数解析version > 3.0.1原文档查看命令:robot --helprobot -h-F --extension value通过文件扩展名控制需要执行的用例。如果只执行一个文件,这个参数无效。需要执行多个扩展名时,用“:”分隔开。Examples:--extension robot-F robot:txt-N…

嘿,程序员,你该学点经济学了!

前言: 笔者一直认为,一个好的程序员,不仅仅是代码敲得好,其它方面的知识和能力相同非常重要。特别是随着年龄的增长。非常多人也慢慢的往管理层发展。这个时候沟通与协调能力变得更加重要,而一些策划,推广方…

linux硬件配置_Linux硬件配置

linux硬件配置What sort of hardware configuration is expected to run Linux? This is a decent question; the real hardware configuration for the OS changes intermittently. The Linux Hardware−HOWTO gives a (pretty much) complete posting of hardware supported…

重邮2019计算机考研复试名单,重庆邮电大学2019年硕士研究生招生复试通知

当前2019年考研分数线已经公布,稳稳过线的同学即可全心准备复试了,中公考研小编整理了“重庆邮电大学2019年硕士研究生招生复试通知”文章,希望对大家有所帮助!各复试考生:根据《2019年重庆邮电大学硕士研究生复试工作方案》&…

Linux相关图解随记

01.dns解析过程02.用户访问网站流程03.局域网电脑上网流程04.网站架构图解转载于:https://blog.51cto.com/qinbin/1954149

数据库范式5nf_第五范式(5NF)| 数据库管理系统

数据库范式5nfFifth normal form (5NF) is also known as project-join normal form (PJ/NF). It is designed to minimize redundancy in relational databases by separating semantically connected relationships in multiple formats to store multi-valued facts. 第五范…

量子物理 詹班 计算机,(电气系计算机系詹班)量子物理作业答案

西南交大峨眉校区大学物理西南交大峨眉校区《大学物理》(量子物理基础)作业6(电气、计算机、詹班)一 选择题1. 以一定频率的单色光照射在某种金属上,测出其光电流曲线在图中用实线表示,然后保持光的频率不变,增大照射光的强度,测出…

MySQL5.6 新特性之GTID【转】

转自 MySQL5.6 新特性之GTID - jyzhou - 博客园http://www.cnblogs.com/zhoujinyi/p/4717951.html 背景: MySQL5.6在5.5的基础上增加了一些改进,本文章先对其中一个一个比较大的改进"GTID"进行说明。 概念: GTID即全局事务ID&#…

python判断素数程序_Python程序检查素数

python判断素数程序什么是质数? (What is a prime number?) A prime number is a natural number that is greater than 1 and cannot be formed by multiplying two smaller natural numbers. 质数是大于1的自然数,不能通过将两个较小的自然数相乘而形…

计算机高级工程师职称评定条件,高级工程师职称评定条件是什么

高级工程师职称评定条件是什么,高级工程师职称有什么作用,以下是小编整理的高级工程师职称评定条件相关内容,供您参考。高级工程师评定条件1、本科毕业及以上,获得工程师资格5年以上,可以申报高级工程师。2、博士毕业&…

c# datetime._C#| DateTime.Year属性与示例

c# datetime.DateTime.Month属性 (DateTime.Month Property) DateTime.Month Property is used to get the year component of this object. Its a GET property of DateTime class. DateTime.Month属性用于获取此对象的年份组成部分。 这是DateTime类的GET属性。 Syntax: 句法…

NO6——KMP

1 int next[N];2 char str1[M],str2[N];3 //str1 长&#xff0c;str2 短4 //len1,len2,对应str1,str2的长5 6 void get_next(int len2)7 {8 int i 0,j -1;9 next[0] -1;10 while(i<len2)11 {12 if(j -1 || str2[i] str2[j])13 {14 …

计算机文化基础第二章,计算机文化基础(第二章Windows2000操作系统)

计算机文化基础(第二章Windows2000操作系统)第二章Windows 2000 操作系统1. 打开“资源管理器”的方法不能是_A右击“开始”按钮 B选择“开始” 、 “程序”菜单 C从“我的电脑”的快捷菜单 D从“控制面板”中选择2. 在“资源管理器”中选定多个文件的方法不能是_A逐个双击要选…

r语言简介_R语言简介

r语言简介R is a language and environment for statistical computing and graphics that is supported by the R Foundation for Statistical Computing. It is a GNU project which is similar to the S language and environment developed at Bell Laboratories by John C…

linux中echo的使用方法

1.echo命令我们经常使用的选项有两个&#xff0c;一个是-n&#xff0c;表示输出之后不换行。另外一个是-e&#xff0c;表示对于转义字符按对应的方式处理&#xff0c;假设不加-e那么对于转义字符会按普通字符处理。 2.echo输出时的转义字符 \b 表示删除前面的空格 \n 表示换行 …

如何让计算机两个用户使用不同步,如何实现两台或多台电脑远程修改文件同步更新?...

说起文件同步工具&#xff0c;现在网上这样的程序很多&#xff0c;微软也为用户提供了一款免费的远程同步软件——Windows Live Sync。该程序提供的文件同步功能允许用户在两台或更多电脑上对指定的文件夹中的文件进行同步更新。小知识&#xff1a;文件的同步更新&#xff0c;就…

本地事物的简介

2019独角兽企业重金招聘Python工程师标准>>> 此章带大家回顾下本地事物的一些内容。标题 2 事物: 有一组操作构成的可靠,独立的工作单元----百度百科 事物的四大特性: A:原子性(Atomicity)事务是数据库的逻辑工作单位&#xff0c;事务中包括的诸操作要么全做&#x…

dbms数据库管理系统_DBMS中的数据库语言

dbms数据库管理系统DBMS数据库语言 (DBMS Database languages ) Database languages are the languages that provide the facility to specify the database schema and to express database queries and updates. They are further divided into four categories but all are…

物联网计算机相关专业吗,物联网工程属于计算机专业吗

励志语录(7qianxun.com)不是,物联网工程本身就是一个专业,属于工学范畴。本专业学生要具有较好的数学和物理基础&#xff0c;掌握物联网的相关理论和应用设计方法&#xff0c;具有较强的计算机技术和电子信息技术的能力。物联网工程专业就业前景怎么样教育装备网、物联网是继计…