wordpress获取屏幕宽度_Qt for Android屏幕适配方法

在阅读本文之前,读者可以先了解一下我之前发布的一篇有关像素密度计算的文章《Qt for Android屏幕DPI计算方法》。

在前面的文章中描述了计算手机DPI的方法,这里需要提醒大家的是,即使通过设备的像素密度值,选取了正确的图片资源文件夹,在QML移动开发中,也还是需要对图片大小做一个换算处理。请看下面代码片段:

import QtQuick 2.12import QtQuick.Controls 2.0import QtQuick.Layouts 1.12import QtQuick.Controls.Styles 1.4import QtQuick.Window 2.2...Image {        id: backgoundImage        anchors.fill: parent        width: sourceSize.width/Screen.devicePixelRatio        height: sourceSize.height/Screen.devicePixelRatio        source: "qrc:/img-res/"+appEngine.resourceFolder()+"/signin_bg.png"    }...

sourceSize.width得到的是图片的像素宽度,用它除以设备像素比值(请看我前面发表的文章),得到设备无关像素值。为什么需要这样做呢?在QML for Android开发中,对象的宽度和高度的单位不是像素,而是设备无关像素值(强调:这里指移动开发,而不是桌面开发)。可以这样证明:在1080x1920像素分辨率的手机上,如果读者在QML代码中创建一个矩形或者图片对象,并把它的宽高分别设置为1080和1920,可以发现这个矩形或者图片的右边和下边,远远的显示到了屏幕的外面,而通过下面代码得到的宽高,才是真正刚好铺满屏幕的宽高,这个宽高是与设备无关的:

QRect screenRect = QGuiApplication::primaryScreen()->geometry();int screenW = screenRect.width();int screenH = screenRect.height();

appEngine.resourceFolder()这是从C++代码中获取的图片资源文件夹名称,把它拼接在QML代码中的图片资源路径中,它是通过DPI而决定的,请看下面代码:

void Engine::uiInit(){    int dpi = this->getScreenDPI();    qDebug()<<__line__>getScreenDPI() = "<

不同DPI设备的图片资源保存方法:

1a8de1fd234639d033748dea38adef16.png
455c288ec7abaf6d76ce405e62284cc1.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值