发现问题
分享一个最近遇到的小问题,
由于最近在编写的项目是服务于公司内部工作电脑,分辨率大都是1080p,也都没有缩放的情况,因此也没有考虑到高DPI缩放问题。
但最近由于临时需求需要出差,空闲时使用自己的笔记本电脑继续编写项目,由于自己的电脑是2K分辨率,并且开启了150%缩放。此时发现不仅在设计时各组件的大小不一,看起来很别扭。而且在编译运行时实际界面比设计时界面小很多。
解决输出大小问题
首先肯定是考虑到分辨率的影响,老生常谈的问题,直接在main.cpp里面加上如下的前三行代码,即可缓解高DPI启用缩放下产生的实际界面缩小问题。虽然在还会出现一部分组件不适应的小瑕疵(如边框线部分临时消失,部分组件变大一两个像素等),但是大部分都不适已经解决。
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
/*启用缩放*/
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
解决设计大小问题
此时发现,输出的程序已经正常大小,但是设计模式下界面仍然是被异常放大的情况(尤其是所有东西都被放大了,唯独字体没放大),把控不好设计大小。
此时考虑到qt针对高DPI的适配可能不是很完美,在设置中关闭DPI取整策略后即可实现设计和输出同步