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移动开发的原创内容!

最新文章

  1. RabbitMQ - TcpConnection析构引发的一次handshake_timeout
  2. 树莓派3b+ 用samba与windows共享文件
  3. IDS IPS WAF之安全剖析
  4. 使用 Java 开发并生成 .jar 文件
  5. ADB 在 Android SDK 的中的路径
  6. view动画库
  7. 程序员眼里IE浏览器是什么样的
  8. 不要怂,就是GAN (生成式对抗网络) (六):Wasserstein GAN(WGAN) TensorFlow 代码
  9. Python+Selenium webdriver Api
  10. Map集合中,关于取值和遍历的相关操作
  11. Python——Redis相关知识
  12. ionic iphone下的问题
  13. Hibernate入门(九)级联删除
  14. 从oracle导出数据成csv,将csv导入mongodb问题
  15. spring使用@Autowired为抽象父类注入依赖
  16. elt区间分布
  17. React Native移动开发实战-2-如何调试React Native项目
  18. 项目上线,php的错误信息必须不让其在页面中显示给客户,
  19. wazuh官方安装指南(中文译版本)
  20. UITableViewCell状态切换效果

热门文章

  1. Django day29 视图,路由控制,响应器
  2. 微信小程序之上传多张图片
  3. HTML-ul分分钟理解
  4. Django返回json给钱前台的方法
  5. Java系列学习(九)-多态
  6. Oracle 递归的写法(start with) 以及where条件作用域
  7. python框架之Flask基础篇(一)
  8. android studio 控件提示大写
  9. DOM对象之window
  10. Centos6.7 ELK日志系统部署