QT 5.15 不同分辨率下相同项目界面设计项目产生差异问题

发现问题

分享一个最近遇到的小问题,

由于最近在编写的项目是服务于公司内部工作电脑,分辨率大都是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取整策略后即可实现设计和输出同步

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值