查网站跳出率,免费文档模板素材网站,内蒙古建设工程造价信息网官网入口,深圳网站建设.-方维网络简述
QScreen主要用于提供与屏幕相关的信息。它可以获取有关显示设备的分辨率、尺寸、DPI#xff08;每英寸点数#xff09;等信息。本文主要是介绍Qt5.15与Qt6环境下#xff0c;QScreen的差异#xff0c;以及如何判断高DPI设备。 属性说明
logicalDotsPerInch#xff1…简述
QScreen主要用于提供与屏幕相关的信息。它可以获取有关显示设备的分辨率、尺寸、DPI每英寸点数等信息。本文主要是介绍Qt5.15与Qt6环境下QScreen的差异以及如何判断高DPI设备。 属性说明
logicalDotsPerInch
逻辑DPI每英寸的逻辑点数或像素数。
经过测试Qt5.15 逻辑DPI结果会被Windows缩放影响Qt6不被影响。
physicalDotsPerInch
物理DPI每英寸的物理点或像素数。此值表示屏幕显示上的像素密度根据基础系统提供的信息该值可能并不完全准确。
经过测试Qt6.8 物理DPI会被Windows缩放影响Qt5.15不被影响。
availableGeometry
返回屏幕的可用几何区域。即排除任务栏或其他屏幕边界外的可用区域。
经过测试Qt6.8 结果会被Windows缩放影响Qt5.15不被影响。
physicalSize 获取屏幕的物理尺寸单位毫米即屏幕的实际物理大小。
manufacturer、model、name
获取屏幕的厂商、模型、名称如果有的话。
devicePixelRatio
返回设备的像素比即缩放因子对于高DPI设备该值大于1。
经过实际测试通过此参数Qt6.8能直接判断高DPI设备需要Windows放大显示来达到最佳显示效果Qt5.15则无法判断换了3台电脑16寸1920*1080笔记本大概24寸的1920*1080台式机以及16寸2560*1600笔记本devicePixelRatio数值一直是1。
refreshRate 获取屏幕的刷新率单位Hz表示屏幕每秒钟刷新的次数。
切换刷新率时Qt6.8和Qt5.15均能检测到。 获取主屏幕参数
将QScreen中的成员值打印出来以下是获取主屏幕参数的代码
#include QGuiApplication
#include QScreen
#include QDebugint main(int argc, char *argv[])
{QGuiApplication app(argc, argv);// 获取默认屏幕QScreen *screen QGuiApplication::primaryScreen();if (screen) {qDebug() logicalDotsPerInch: ;qDebug() screen-logicalDotsPerInch();qDebug() screen-logicalDotsPerInchX();qDebug() screen-logicalDotsPerInchY();qDebug() ;qDebug() physicalDotsPerInch: ;qDebug() screen-physicalDotsPerInch();qDebug() screen-physicalDotsPerInchX();qDebug() screen-physicalDotsPerInchY();qDebug() ;qDebug() availableGeometry: screen-availableGeometry();qDebug() availableVirtualGeometry: screen-availableVirtualGeometry();qDebug() virtualGeometry: screen-virtualGeometry();qDebug() nativeOrientation: screen-nativeOrientation();qDebug() orientation: screen-orientation();qDebug() primaryOrientation: screen-primaryOrientation();qDebug() depth: screen-depth();qDebug() devicePixelRatio : screen-devicePixelRatio();qDebug() manufacturer: screen-manufacturer();qDebug() model: screen-model();qDebug() name: screen-name();qDebug() physicalSize: screen-physicalSize();qDebug() refreshRate: screen-refreshRate();qDebug() serialNumber: screen-serialNumber();}return app.exec();
}Qt5.15.2打印结果 logicalDotsPerInch: 144 144 144 physicalDotsPerInch: 188.749 188.475 189.023 availableGeometry: QRect(0,0 2560x1528) availableVirtualGeometry: QRect(0,0 2560x1528) virtualGeometry: QRect(0,0 2560x1600) nativeOrientation: Qt::PrimaryOrientation orientation: Qt::LandscapeOrientation primaryOrientation: Qt::LandscapeOrientation depth: 32 devicePixelRatio : 1 manufacturer: model: name: \\\\.\\DISPLAY1 physicalSize: QSizeF(345, 215) refreshRate: 60 serialNumber: Qt6.8.1 打印结果 logicalDotsPerInch: 96 96 96 physicalDotsPerInch: 125.865 125.675 126.055 availableGeometry: QRect(0,0 1707x1019) availableVirtualGeometry: QRect(0,0 1707x1019) virtualGeometry: QRect(0,0 1707x1067) nativeOrientation: Qt::PrimaryOrientation orientation: Qt::LandscapeOrientation primaryOrientation: Qt::LandscapeOrientation depth: 32 devicePixelRatio : 1.5 manufacturer: BOE model: name: \\\\.\\DISPLAY1 physicalSize: QSizeF(345, 215) refreshRate: 60.0006 serialNumber: 对比运行结果
Qt5.15和Qt6.8的运行结果不一致。
将Windows缩放由150%下调至125%后Qt5.15的运行结果显示逻辑DPI由144变为120
物理DPI结果不变缩放因子依旧是1不会随着Windows缩放而变化。 而Qt6.8的运行结果显示逻辑DPI依旧是96不会随着Windows缩放而发生变化。
物理DPI由125变为了150缩放因子由1.5变为了1.25availableGeometry相关的数据也发生了变化。 判断高DPI屏幕
关于判断是否为高DPI屏幕在Qt5.15环境下需要用 logicalDotsPerInch/96得到的值为缩放因子(原devicePixelRatio值不可用)而在Qt6.8环境下可以直接通过缩放因子(devicePixelRatio 1)判断是否为高DPI屏幕。