1. 为什么你的Qt应用在4K屏幕上糊成一片?
第一次把Qt程序放到4K显示器上运行时,我差点以为电脑中毒了——所有文字都挤在一起,按钮小得要用放大镜才能点中。这其实是典型的DPI适配问题,就像把手机照片直接投到电影院银幕上必然模糊一样。
现代显示器的像素密度(PPI)差异巨大。普通2K显示器约109PPI,而4K显示器通常达到163PPI。如果程序简单粗暴地按像素尺寸渲染,在4K屏上所有元素都会缩小到原来的1/4。Qt提供了完整的DPI感知方案,核心是这三个黄金配置:
int main(int argc, char *argv[]) {
// 高DPI缩放三件套
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::Round);
QGuiApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
Qt::AA_EnableHighDpiScaling是总开关,它会自动根据系统DPI设置缩放界面。但实际测试发现,在3840×2160分辨率下,只有系统缩放设为100%或200%时效果正常,150%缩放仍然显示异常。这是因为Windows的150%缩放对应1.5倍系数,Qt默认会向下取整到1倍,导致实际缩放不足。
2. 征服非整数缩放比例的实战技巧
2.1 缩放因子舍入策略详解
Qt::HighDpiScaleFactorRoundingPolicy就像个数学老师,决定如何处理1.5、1.75这些"不整齐"的缩

352

被折叠的 条评论
为什么被折叠?



