Qt Windows DPI适配

首先你要确定自己用的是Qt5 还是Qt6,据我所知,Qt6可以自己适配dpi,但是部分显示会有bug,比如输入框会突然透明等。但是Qt6可以自己锁定dpi,不随着系统的放大缩小而变化,这个代码我还没有,如有需要可以自己去网上找一找。

PS:Qt5默认dpi是锁死的,不会随着系统的放大/缩小而影响界面的变化的,所以我们需要设置dpi适配,本文开发环境是Qt5.15.2 + msvc2019 32bit版本。

先上链接,本文采用的是方法四:

        QT windows dpi变化导致的界面异常处理_圆月山庄的博客-CSDN博客

采用了方法四后,程序已经可以适配dpi了,并且字体不会模糊,但是图片的话如果你没有准备高分辨率的图片,也会模糊。就算你准备了高清图后,拿pushbutton举例,如果你直接setIcon的话,图片还是很模糊(这应该是Qt5的bug,Qt6不会这样),你就需要通过样式表设置图片,这样就可以为pushbutton设置高清图:

poPb->setStyleSheet(QString("QPushButton{border-image: url(%1)}").arg(oPath));

如果是QLabel设置高清图的话,需要让图片尺寸设置为QLabel尺寸:

        QPixmap p(filePath);
        p.scaled(poLb->size(), Qt::KeepAspectRatio);
        poLb->setScaledContents(true);
        poLb->setPixmap(p);

猜你喜欢

转载自blog.csdn.net/qq_25704799/article/details/124603528