首页 > 代码库 > QT Demo 之 window(4) ScreenInfo
QT Demo 之 window(4) ScreenInfo
启动程序后,跳过Splash Screen之后就会看到下面的一个界面:
我们重点看一下界面的下半部分Screen Info部分。
上面分别显示了:
- 屏幕名称
- 屏幕尺寸(即分辨率)
- 像素密度
- 逻辑像素密度
- 可用的屏幕尺寸
- 屏幕方向
- 原始的屏幕方向
下面我们就逐一展开每一项的实际意义。
屏幕名称
在PC上,如果只有一个屏幕就会显示为\\.\DISPLAY1,而如果是双屏幕,则会显示为\\.\DISPLAY2。
获取了屏幕的名称后,我们就可以判断当前是在哪个显示设备上进行显示,从而可以完成一些自定义的操作。
屏幕尺寸和可用屏幕尺寸
Screen并没有直接的接口获取屏幕的尺寸以及可用的屏幕大小,而是提供了以下两组属性:- Screen.width和Screen.height
- Screen.desktopAvailableWidth和Screen.desktopAvailableHeight
Screen.width和Screen.height的值表示了屏幕的原始大小,而Screen.desktopAvailableWidth和Screen.desktopAvailableHeight则是去除了状态栏、管理栏等由系统来管理的部分。
因此,在处理居中的控件时,如果是全屏居中就需要使用Screen.XXX,而如果是显示区域内居中,则要使用Screen.desktopAvailableXXX。
像素密度和逻辑像素密度
这两个参数分别是通过pixelDensity和logicalPixelDensity属性来获取的。不过,在官方的说明文档中,logicalPixelDensity属性被标记为obsolete,也就是是说废弃的。
像素密度的定义,在维基百科上给出的定义是:是一个表示打印图像或显示器单位面积上像素数量的指数。一般用来计量电脑显示器,电视机和手持电子设备屏幕的精细程度。通常情况下,每英寸像素值越高,屏幕能显示的图像也越精细。
上面的定义读起来不复杂,但是具体像素密度和逻辑像素密度表示什么,我个人还不是很懂。我首先做了一个测试,就是改变屏幕的分辨率,然后再次运行程序,观察像素密度和逻辑像素密度的值是否发生了改变。
测试的结果是,像素密度和逻辑像素密度的值是固定的72PPI和96PPI,并不随分辨率的设置而改变。因此,我们可以得出一个结论:像素密度和逻辑像素密度是一个屏幕的物理属性。
屏幕方向和原始的屏幕方向
Screen通过orientation和primaryOrientation属性分别表示了当前的屏幕方向和原始的屏幕方向,在PC上,这个两个值一直是landscape(2),这里的2表示是横向,如果是landscape(8)则表示是180°旋转的横向。
而通过获取屏幕的方向和原始方向,对于在支持旋转的设备上,则可以更好的调整控件显示。
总结
这一篇的博客比较水,主要是了解了Qt中的Screen对象。而在实际中,我们用到的最多的就是Screen.width和Screen.height。
QT Demo 之 window(4) ScreenInfo