Qt Windows高清DPI自适应分辨率缩放
windows实际分辨率, 1920x1080
显示窗体w大小:800x600
100缩放率:
关闭Qt::AA_EnableHighDpiScaling
ui->pushButton->size() QSize(114, 30)
"\\\\.\\DISPLAY1"
devicePixelRatio 1
geometry QRect(0,0 1920x1080)
virtualGeometry QRect(0,0 1920x1080)
size QSize(1920, 1080)
virtualSize QSize(1920, 1080)
logicalDotsPerInch 96
scale: 1
开启Qt::AA_EnableHighDpiScaling
ui->pushButton->size() QSize(114, 30)
"\\\\.\\DISPLAY1"
devicePixelRatio 1
geometry QRect(0,0 1920x1080)
virtualGeometry QRect(0,0 1920x1080)
size QSize(1920, 1080)
virtualSize QSize(1920, 1080)
logicalDotsPerInch 96
scale: 1
125缩放率:
关闭Qt::AA_EnableHighDpiScaling
ui->pushButton->size() QSize(114, 30)
"\\\\.\\DISPLAY1"
devicePixelRatio 1
geometry QRect(0,0 1920x1080)
virtualGeometry QRect(0,0 1920x1080)
size QSize(1920, 1080)
virtualSize QSize(1920, 1080)
logicalDotsPerInch 120
scale: 1.25
w.size() QSize(800, 600)
开启Qt::AA_EnableHighDpiScaling
ui->pushButton->size() QSize(114, 30)
"\\\\.\\DISPLAY1"
devicePixelRatio 1
geometry QRect(0,0 1920x1080)
virtualGeometry QRect(0,0 1920x1080)
size QSize(1920, 1080)
virtualSize QSize(1920, 1080)
logicalDotsPerInch 120
scale: 1.25
w.size() QSize(800, 600)
150缩放率:
关闭Qt::AA_EnableHighDpiScaling
ui->pushButton->size() QSize(114, 30)
devicePixelRatio 1
geometry QRect(0,0 1920x1080)
virtualGeometry QRect(0,0 1920x1080)
size QSize(1920, 1080)
virtualSize QSize(1920, 1080)
logicalDotsPerInch 144
scale: 1.5
开启Qt::AA_EnableHighDpiScaling
ui->pushButton->size() QSize(114, 30)
devicePixelRatio 2
geometry QRect(0,0 960x540)
virtualGeometry QRect(0,0 960x540)
size QSize(960, 540)
virtualSize QSize(960, 540)
logicalDotsPerInch 96
scale: 1
看来会按照 devicePixelRatio 去把屏幕大小做了缩小
175缩放率:
关闭Qt::AA_EnableHighDpiScaling
ui->pushButton->size() QSize(114, 30)
"\\\\.\\DISPLAY1"
devicePixelRatio 1
geometry QRect(0,0 1920x1080)
virtualGeometry QRect(0,0 1920x1080)
size QSize(1920, 1080)
virtualSize QSize(1920, 1080)
logicalDotsPerInch 168
scale: 1.75
开启Qt::AA_EnableHighDpiScaling
ui->pushButton->size() QSize(114, 30)
"\\\\.\\DISPLAY1"
devicePixelRatio 2
geometry QRect(0,0 960x540)
virtualGeometry QRect(0,0 960x540)
size QSize(960, 540)
virtualSize QSize(960, 540)
logicalDotsPerInch 96
scale: 1
下面这种方法待尝试
使用qt.conf,在资源qrc里添加,qt/etc/qt.conf, qt.conf文件内容为:
[Platforms][Platforms]
WindowsArguments = dpiawareness=0
https://blog.csdn.net/startl/article/details/105862817
https://doc.qt.io/qt-5/highdpi.html
https://doc.qt.io/qt-6/highdpi.html
Lower-level graphics drawing (such as OpenGL code) need to be high-DPI aware, but can use cross platform Qt APIs to learn about the platform's display resolutions.
但是dpi aware情况下,控件显示异常怎么解决?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2018-10-17 ubuntu 安装NVIDIA驱动过程
2018-10-17 投屏融合技术对比
2011-10-17 win7下vs2008完美破解安装