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的词典开发系列<二>--本地词典的设计
我设计的词典不仅可以实现在线查单词,而且一个重大特色就是具有丰富的本地词典库:我默认加入了八个类型的词典,如下所示: 由于是本人是通信专业,因此加入了华为通信词典.电子工程词典,又由于我喜爱编程,也加 ...
随机推荐
- Python基础数据类型(三)list 列表
3.4列表list [] 列表的格式 lst_l = [1,'123',[1,'www',2],'包青天'] 列表也有索引 print(lst_l[0]) print([-1][0:2]) #包青 切 ...
- Python/Django 下载Excel2007
一.前提 上一篇,我写了下载Excel2003的博文,这里写下载Excel2007的博文的原因有三: 第一.Excel2003基本已经淘汰了 第二.Excel2003下载文件太大,不利于网络传输 第三 ...
- SCOI2014总结
似乎还没有写过SCOI的总结,今天补上,权当填坑. PS:CDQZ的看到了不要到处黑 SCOI-2014应该算是我的小高考,感觉拿住一本招的瓶颈就在这里.加之NOIp只有400分有点拖后腿,所以很早就 ...
- sikuli--前端自动化操作的神器
前端自动话操作应用很广泛,从网购秒杀活动实现自动化抢购,到区块链货币高频交易前端脚本编写(非合作交易所不提供api的情况下). 自动化的流派分为2类,一类是对DOM对象进行解析的,这个是主流,但是受特 ...
- scala的Class
先看类的定义: package com.test.scala.test import scala.beans.BeanProperty /** * scala 的类 */ //定义一个scala的类 ...
- 一、CSS的基础样式
CSS的基础样式 border 边框 复合写法 border:border-width border-style border-color: border-width:边框宽度 top right ...
- Mac下CUDA开启及Tensorflow-gpu 1.4 安装
本文由@ray 出品,转载请注明出处. 文章链接:http://www.cnblogs.com/wolfray/p/8040694.html 在之前的文章中,笔者介绍了在Mac下安装Tensorfl ...
- 01--Java集合知识
一.Java集合概览 Java中集合分2大块,Collection和Map,分别代表不同功能的集合类对象,整体结构图如下: Collection├List│├LinkedList│├ArrayList ...
- printFinal用法示例
printFinal是一个基于jQuery的打印插件,支持打印预览,使用很简单,废话不多多说,直接上代码. <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...
- 一款批量linux管理工具batchshell
BatchShell是什么? BatchShell是一款基于SSH2的批量文件传输及命令执行工具,它可以同时传输文件到多台远程服务器以及同时对多台远程服务器执行命令.BatchShell基于原生的sh ...