发现与明确问题
在我们跨平台运行 QT 工具的时候,发现如下一类问题:
image.png
首先,我们的问题不是在于要自适应调整控件的大小,在不同的平台上,我们要求自己的页面、控件大小保持一致。
我们真实准确的问题在于:基于控件大小一定的前提下,使得不同平台上的字体显示肉眼可见为一致的;不要我们人为根据平台去调整 font size。
探寻问题
为什么字体大小不一致呢?
因为 DPI 一类的问题。同样一个字,高分辨率上的屏幕显示得更小。
解决问题
解决问题的思路
比如我们在 mac 端(高分辨率)工作,但封装出来的 qt 软件需要在 windows 电脑上工作,那么:
方案一
在我们的 project 中就需要增加一个 python 文件,改变 windows 电脑(低分辨率)上的配置。
方案二
激活 EnableHighDpiScaling
解决问题的实际落地方案
方案一
os.environ["DEBUSSY"] = "1"
方案二
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication app(argc, argv);
return app.exec();
}
参考链接
- Changing DPI scaling size of display make Qt application's font size get rendered bigger
- PyQt font size changes with windows display configurations
- Automatic rescaling of an application on high-dpi Windows platform?
- How to set environment variables in Python
- Windows: Fix High DPI issues
- Automatic rescaling of an application on high-dpi Windows platform?
- Python PyQt how to set environment variable for QProcess?
- Document: Environment Variables
网友评论