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移动应用开发(一):适配不同的屏幕的更多相关文章

  1. 快速全面了解QT软件界面开发技术

    快速全面了解QT软件界面开发技术     目录 前言 一. 学习QT可能的目的是什么? 只想体验一下QT? 当前的项目选择了用QT. 为将来做QT技术储备. 二. QT的核心技术优势是什么? QT在软 ...

  2. Qt for Android开发环境搭建及测试过程记录

    最近学习了Qt的QML编程技术,感觉相较于以前的QtGUI来说更方便一些,使用QML可以将界面与业务逻辑解耦,便于开发. QML支持跨平台,包括支持Android平台,因此可以使用Qt的QML进行An ...

  3. 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 ...

  4. Qt实战之开发CSDN下载助手 (3)(结束篇)

    再次申明下,开发这款助手,主要是用来学习交流,并不是用来开发什么刷积分的软件. 好了,言归正传,这次,主要的分析下CSDN的下载,评论,验证码获取机制等等. 好,回到第二篇,当我们成功登陆时,CSDN ...

  5. Qt For Android 开发环境配置

    想了想,还是再写一篇关于Qt for Android开发环境配置的教程. 准备:Java jdk,Android sdk,Android adb,Android ndk,Android ant,Qt ...

  6. 【Qt编程】基于Qt的词典开发系列--后序

    从去年八月份到现在,总算完成了词典的编写以及相关技术文档的编辑工作.从整个过程来说,文档的编写比程序的实现耗费的时间更多.基于Qt的词典开发系列文章,大致包含了在编写词典软件过程中遇到的技术重点与难点 ...

  7. 【Qt编程】基于Qt的词典开发系列<六>--界面美化设计

    本文讲一讲界面设计,作品要面向用户,界面设计的好坏直接影响到用户的体验.现在的窗口设计基本都是扁平化的,你可以从window XP与window 8的窗口可以明显感觉出来.当然除了窗口本身的效果,窗口 ...

  8. 【Qt编程】基于Qt的词典开发系列<三>--开始菜单的设计

    这篇文章讲讲如何实现开始菜单(或者称为主菜单)的设计.什么是开始菜单呢?我们拿常用的软件来用图例说明,大多数软件的开始菜单在左下角,如下图: 1.window 7的开始菜单 2.有道词典的主菜单 3. ...

  9. 【Qt编程】基于Qt的词典开发系列<二>--本地词典的设计

    我设计的词典不仅可以实现在线查单词,而且一个重大特色就是具有丰富的本地词典库:我默认加入了八个类型的词典,如下所示: 由于是本人是通信专业,因此加入了华为通信词典.电子工程词典,又由于我喜爱编程,也加 ...

随机推荐

  1. C# 的反射和映射

    最近想研究一下反射,先上网找了找资料,几乎大部分都是照抄MSDN的内容,生涩难懂,几乎没说,又找了找,发现一些强人的实例解析,才稍微有了 点门道,个人感觉,反射其实就是为了能够在程序运行期间动态的加载 ...

  2. 【洛谷1117_BZOJ4650】[NOI2016] 优秀的拆分(哈希_后缀数组_RMQ)

    题目: 洛谷1117 分析: 定义把我校某兔姓神犇Tzz和他的妹子拆分,为"优秀的拆分" 随便写个哈希就能有\(95\)分的好成绩-- 我的\(95\)分做法比fei较chang奇 ...

  3. ansible剧本

    yaml简介 YAML是"YAML Ain't a Markup Language"(YAML不是一种置标语言)的递归缩写,早先YAML的意思其实是:"Yet Anoth ...

  4. Laravel 5.4.36 session 发现

    由于Laravel session机制完全脱离了PHP自带的session机制  因此对于php.ini 配置session对Laravel  是不会产生影响 代码路径:   vendor/larav ...

  5. Java—RequestMapping相关用法

    RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径.它有6个属性:1.value:指定请求的具体地址:valu ...

  6. css3背景渐变色代码

    从上到下 #grad {  background: -webkit-linear-gradient(red, blue);  background: -o-linear-gradient(red, b ...

  7. 移动web——bootstrap如何修改原组件

    基本介绍 1.bootstrap提供了丰富的组件,但是有时候我们不仅要删除不必要的标签,还需要修改里面的样式 2.我们建议若是修改样式那么最好将源样式从css中拷贝出来,名字换掉,然后修改具体样式,这 ...

  8. 4th 循环结构概述和for语句的格式及其使用

    04.01_Java语言基础(循环结构概述和for语句的格式及其使用) A:循环结构的分类 for,while,do...while B:循环结构for语句的格式: for(初始化表达式;条件表达式; ...

  9. nagios 安装pnp4nagios插件

    Naigos install pnp4nagios 绘图插件 原文地址:http://www.cnblogs.com/caoguo/p/5022230.html [root@Cagios ~]# yu ...

  10. windows环境安装python虚拟环境

    虚拟环境安装参考 https://www.cnblogs.com/suke99/p/5355894.html workon环境变量配置参照 https://www.cnblogs.com/jiuyan ...