QML怎么适配不同的设备

前言

做嵌入式和移动开发,不同的设备,不同的分辨率需要UI能够适配,这是一个很现实的问题。QML作为Qt中为UI而生的,使用QML一定要解决适配的问题。

分辨率

现在同一尺寸的屏幕,其分辨率也是不同,在QML中使用 anchors 进行相对的布局时,其是以像素为单位。现在有一个概念,叫做每英寸像素数目。当设备的PPI不同时,控件的大小不同,这可能导致,如果设计是在一个尺寸小PPI低的屏幕上设计,将程序放到一个尺寸大PPI高的设备上,那么控件看上去就更小了,所以在QML中直接使用像素布局是不可取的。

Screen

QML中提供的Screen为我们提供了设备相关的数据,其中很重要的是DPI(Devices per mm pixel),设备每毫米的像素点,通过这个我们就可以以mm为标准来做布局,这样我们就不会出现,在高分辨率的设备上,控件变得很小。

    property real dpi: Screen.pixelDensity.toFixed(2)

设备一个属性,取两个小数点。那么可以这样设置

    anchors {top:parent.top; topMargin: 2 * dpi;}

这个控件离parent上部 2mm,不管在那个设备上,其表现都是一样的,那么对于控件的长和宽表现也是一样的。

我们设计界面的时候肯定在一个尺寸上设计,那么如果换了一个很大的设备,那么控件就不适合了,那么我们需要有一点伸缩性。

伸缩

Screen.height和Screen.width为当前的显示设备的长和宽,但是他们是像素,得到实际的尺寸,需要除以dpi。

假设我们设计的时候的长和宽为a和b,运行时得到的长和宽为c和d。

那么在布局的时候就应该是这样的

    anchors {top:parent.top; topMargin: 2 * dpi * (d/b);}

那么对于控件的长和宽也是一样的,这样我们就实现了在不同的设备上实现控件和控件间隔随尺寸大小不同伸缩。

时间: 2024-10-07 18:56:17

QML怎么适配不同的设备的相关文章

Android适配不同的设备

感谢原作者的整理: http://blog.csdn.net/chenyjays/article/details/41308887 适配不同的语言 把UI中的字符串存储在外部文件,通过代码提取. 创建区域设置目录和字符串文件 为了支持多国语言,在res/中创建一个额外的values目录以连字符和ISO国家代码结尾命名,比如values-es/ 是为语言代码为"es"的区域放置简单的资源文件的目录.Android会在运行时根据设备的区域设置,加载相应的资源. 若你决定支持某种语言,则需要

iOS开发(一稿适配所有iOS设备)— AutoLayout入门

智能手机发展到今天,屏幕尺寸变的越来越多,iPhone从最初的3.5寸屏幕,到后来推出的4寸屏,直到苹果推出iPhone 6 和 iPhone 6Plus,也宣告着苹果阵营被彻底攻破,进入了屏幕尺寸碎片化的时代.只为某一个屏幕尺寸设计的日子已经不在存在.为了适配所有的屏幕,设计师必须考虑各种屏幕尺寸.但是又不可能为每个尺寸都设计一遍.那么我们又该如何面对屏幕碎片化的困境? 图1,图片来自:HTTP://WWW.PAINTCODEAPP.COM/NEWS/ULTIMATE-GUIDE-TO-IPH

第148天:js+rem动态计算font-size的大小,适配各种手机设备

需求: 在不同的移动终端设备中实现,UI设计稿的等比例适配. 方案: 布局排版都用rem做单位,然后不同宽度的屏,js动态计算根节点的font-size. 假设设计稿是宽750px来做的,书写css方便计算考虑,根节点的font-size假定为100px,得出设备宽为7.5rem.设计稿中标注的任何px数值都可以换算成px/100的rem值. 就是说,每一个设备的宽度都定为7.5个rem,然后宽度非750px的设备里,就需要用JS对font-size做动态计算. 换算关系为:根节点的font-s

React Native适配IPhoneX系列设备之<SafeAreaView />

SafeAreaView的目的是在一个“安全”的可视区域内渲染内容.具体来说就是因为目前有 iPhone X 这样的带有“刘海”的全面屏设备,所以需要避免内容渲染到不可见的“刘海”范围内.本组件目前仅支持 iOS 设备以及 iOS 11 或更高版本. SafeAreaView会自动根据系统的各种导航栏.工具栏等预留出空间来渲染内部内容.更重要的是,它还会考虑到设备屏幕的局限,比如屏幕四周的圆角或是顶部中间不可显示的“刘海”区域. 实例代码: import { // … SafeAreaView

一个程序员要适配20000款设备,睡觉都要被吓醒了

根据OpenSignal最新的研究报告显示,目前有超过24000种不同类型的设备,支持一种以上的Andriod版本,但它们在屏幕分辨率.规格.按键.处理器.可用内存大小等方面,都存在着差异. 嗯,老实说这个数字把Bird吓了一跳,我想这两万多款设备里面,很大部分设备应该是多年前的淘汰机型了.不过今年新上市的机型数量也是可观的,有数据显示接近2000款. 设备碎片化现象也不仅仅是Android的专利,iOS平台每年都会曝出负优化丑闻,就是说苹果为了多卖设备,每当新设备发布,老设备性能就会变差.其实

Android Training学习笔记之适配不同的设备

Android是一个开源的开放的操作系统,世界上的任何人都可以基于这个系统进行适合自己的定制活动.Android的这样一个特点使得android世界的碎片化很严重,形形色色的android设备太多太多.这就给app开发带来了不小的困难,保证app在不同的设备上的使用体验是一致的是每一个开发者必须考虑,但是很头疼的问题.Google在这块也做了很多的工作,尤其是在最新的android 6.0中,多设备的支持和自适应做的已经非常好了.要想让你的app能够利用google提供的优良自适应特性,你必须要

iPhone设备及屏幕适配

// // Common.h // 微信 // // #ifndef Common_h #define Common_h // iPhone设备及屏幕适配 //4的设备 #define KDevice_Is_Retina ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode]

【原】pageResponse - 让H5适配移动设备全家

上一篇文章<为什么选择iPhone5的分辨率作为H5视觉稿尺寸>最后留下了问题:是否需要视觉设计师设计多套的视觉稿供给前端工程师做页面适配呢?按照自己以前的方法,通常会要求设计师设计2套的尺寸,一套是窄屏手机(如iPhone4),另一套是宽屏手机(如iPhone5),这样的好处不仅减少重构页面的适配成本外,也在页面展现上提升页面的用户体验. 然而不管是设计2套还是3套以上的视觉稿来辅助前端来完成页面,最终还是会抵挡不住设备更新换代带来的适配问题,移动设备不断从低分辨率到高分辨率过渡,不同分辨率

【Android应用开发技术:用户界面】设备适配

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 由于Android平台的丰富性和多样性,全世界的Android设备有着各种各样的尺寸和大小,而为了能够推广我们的应用给各种各样的用户,设备适配是一件很重要的工作. 一 语言适配 把UI中的字符串存储在外部文件,通过代码提取,这是一种很好的做法.Android可以通过工程中的资源