Qt移动应用开发(一):适配不同的屏幕
Qt移动应用开发(一):适配不同的屏幕
到眼下为止。Qt5.3已经出现非常长一段时间了。而且已经有一些应用使用Qt进行构建了。我自己也完毕了第一款使用Qt构建的手机游戏《吃药了》。那么接下来的几篇文章主要向大家分享我是如何使用Qt进行移动开发的。Qt移动应用开发分为多篇博客文章,每一篇文章都力求精简不罗嗦。力求为大家提供一个快捷的參考。我在这里也主要将使用Qt制作《吃药了》的方法技巧一一分享给大家。
说到移动应用开发,第一想到的就是Android了,的确。
Digia事实上在为Qt制定向移动进军的道路的时候充分地考虑了眼下移动市场。首先Android是开源的,可以争取到非常多软硬件厂商,其次iOS是一款优秀的移动操作系统。最后Windows Phone 7/8也蓄势待发,因此Digia主要在Qt5.0的时候引入了QPA的概念。这让平台适配变得easy起来;Qt5.1的时候实现了Android操作系统的适配;Qt5.2的时候实现了iOS系统的适配;Qt5.3的时候实现了Windows Phone的适配。当然一些小众移动开发平台比方说BB10、Ubuntu
Phone和Jolla则是倒贴到Qt上来了。所以至此Qt已经可以适应绝大多数移动平台,再加上嵌入式领域的一枝独秀,Qt其实已经成为适配平台最多的框架了。
只是,哪怕是适配Android一个平台,因为Android系统的碎片化以及Android应用是独占屏幕大小的,导致开发人员在开发应用的时候不得不考虑屏幕的分辨率。那么Qt是怎样想办法实现的不同屏幕的适配呢?假设你是使用纯C++开发的Qt框架。那么我的另外一篇文章能够帮助你。如今我主要介绍一下QML是怎样解决的。
1、使用锚布局方式
QML使用了一种叫锚布局(anchorlayout)的布局方式,这就好比是知道了某个控件的相对位置,然后另外一个控件使用锚布局的方式非常快就知道依据此控件该怎样摆放。比方说这个截图:
右下角的“copyright@jcystudio”就是使用锚布局进行排列的:
Text
{
anchors.bottom:parent.bottom
anchors.right:parent.right
text:"copyright©jcystudio"
}
2、使用Screen来获取屏幕分辨率
使用锚布局可能还不够,由于图片等元素一旦碰上了小分辨率的屏幕就会显示不全。这种用户体验是非常差的。须要缩放才行。那么问题就转化为怎样知道屏幕的分辨率大小呢?这里我们採用QtQuick.Window 2.1中的Screen类。即使用Screen.width和Screen.height来获取获取屏幕的大小。
最后分享一下我开发《吃药了》Android和桌面版适配屏幕分辨率的方法:
Window
{
id: root
width: Qt.platform.os === "android"? Screen.width: 320
height: Qt.platform.os === "android"? Screen.height: 480
……
}
这段代码的意思是假设当前的操作系统是Android。那么使用Android屏幕的原始分辨率。否则的话採用的是320×480的配置。
以下是两幅图的对照:
以下是还有一个我开发的应用适配不同分辨率的对照:
本文已參加《CSDN博文大赛》,请投我一票,支持很多其它Qt移动开发的原创内容!
Qt移动应用开发(一):适配不同的屏幕的更多相关文章
- 快速全面了解QT软件界面开发技术
快速全面了解QT软件界面开发技术 目录 前言 一. 学习QT可能的目的是什么? 只想体验一下QT? 当前的项目选择了用QT. 为将来做QT技术储备. 二. QT的核心技术优势是什么? QT在软 ...
- Qt for Android开发环境搭建及测试过程记录
最近学习了Qt的QML编程技术,感觉相较于以前的QtGUI来说更方便一些,使用QML可以将界面与业务逻辑解耦,便于开发. QML支持跨平台,包括支持Android平台,因此可以使用Qt的QML进行An ...
- Qt的IDE开发环境(KDevelop,MonKey Studio,QDevlop,Dev-cpp,Cobras,Edyuk)
讲到Qt的IDE开发环境,本人一直在Windows下使用VC6.0 + Qt4.3.1开发程序.但转到Linux下,使用Fedora中自带的KDevelop + Qt4.3.1开发程序. 最近一直做Q ...
- Qt实战之开发CSDN下载助手 (3)(结束篇)
再次申明下,开发这款助手,主要是用来学习交流,并不是用来开发什么刷积分的软件. 好了,言归正传,这次,主要的分析下CSDN的下载,评论,验证码获取机制等等. 好,回到第二篇,当我们成功登陆时,CSDN ...
- Qt For Android 开发环境配置
想了想,还是再写一篇关于Qt for Android开发环境配置的教程. 准备:Java jdk,Android sdk,Android adb,Android ndk,Android ant,Qt ...
- 【Qt编程】基于Qt的词典开发系列--后序
从去年八月份到现在,总算完成了词典的编写以及相关技术文档的编辑工作.从整个过程来说,文档的编写比程序的实现耗费的时间更多.基于Qt的词典开发系列文章,大致包含了在编写词典软件过程中遇到的技术重点与难点 ...
- 【Qt编程】基于Qt的词典开发系列<六>--界面美化设计
本文讲一讲界面设计,作品要面向用户,界面设计的好坏直接影响到用户的体验.现在的窗口设计基本都是扁平化的,你可以从window XP与window 8的窗口可以明显感觉出来.当然除了窗口本身的效果,窗口 ...
- 【Qt编程】基于Qt的词典开发系列<三>--开始菜单的设计
这篇文章讲讲如何实现开始菜单(或者称为主菜单)的设计.什么是开始菜单呢?我们拿常用的软件来用图例说明,大多数软件的开始菜单在左下角,如下图: 1.window 7的开始菜单 2.有道词典的主菜单 3. ...
- 【Qt编程】基于Qt的词典开发系列<二>--本地词典的设计
我设计的词典不仅可以实现在线查单词,而且一个重大特色就是具有丰富的本地词典库:我默认加入了八个类型的词典,如下所示: 由于是本人是通信专业,因此加入了华为通信词典.电子工程词典,又由于我喜爱编程,也加 ...
随机推荐
- java 锁机制(synchronized 与 Lock)
在java中,解决同步问题,很多时候都会使用到synchronized和Lock,这两者都是在多线程并发时候常使用的锁机制. synchronized是java中的一个关键字,也就是说是java内置的 ...
- day01_12/11/2016_Spring入门PPT
s1 s2 s3 s4 s5 s6 s7 s8 IOC1 IOC2 入门编写1 入门编写2 入门编写3 入门编写4---心得
- jvm gc日志解读
参考 https://blog.csdn.net/yxc135/article/details/12137663 认识gc日志每个位置的含义 java 8 full gc [Full GC (Meta ...
- MySQL实现当前数据表的所有时间都增加或减少指定的时间间隔
DATE_ADD() 函数向日期添加指定的时间间隔. 当前表所有数据都往后增加一天时间: UPDATE ACT_BlockNum SET CreateTime = DATE_ADD(CreateTim ...
- 阿里云ECS远程桌面连接失败
管理=>本实例安全组=>配置规则=>配置3389端口
- Split()函数
最近遇到一个有趣的问题关于使用Split函数 ,该函数能够根据传递的参数拆分,并返回一个string的数组. 贴出一个奇怪的例子 using System; using System.Collecti ...
- 用u盘安装黑苹果10.12.3
链接: https://pan.baidu.com/s/1eR9GgwE 密码: rubh 主机和显示器必须是数字口连接,如dvi.displayport,VGA不能进安装界面 下载苹果镜像文件10. ...
- CAD动态绘制多段线(com接口)
主要用到函数说明: _DMxDrawX::DrawLine 绘制一个直线.详细说明如下: 参数 说明 DOUBLE dX1 直线的开始点x坐标 DOUBLE dY1 直线的开始点y坐标 DOUBLE ...
- Js—innerHTML和innerText的区别
1.innerHTML属性和innerText属性 都是对元素的一个操作,简单讲,innerHTML可以在某种特定环境下重构某个元素节点的DOM结构,innerText只能修改文本值 在JavaScr ...
- Accessoft-日期区间段查询示例,开始日期至截止日期区段查询
Accessoft-日期区间段查询示例,开始日期至截止日期区段查询 实现功能效果如下: 示例查询开始日期为2017年3月15日到2017年3月16日的内容: sql查询语句如下: SELECT Inf ...