首页| 论坛| 消息

标题:windows 屏幕下,qt程序模拟奇妙的文字拥挤在一起
作者:onlyone
日期:2023-02-21 17:30
内容:

不是必现,在某些笔记本,或者dpi高的机器上,qt的记事本程序。
文字没有展开,错叠在一起了。
已经尝试如下方案:
//可以防止某些屏幕下的字体拥挤重叠问题。暂时屏蔽,不使用qt方法,使用windows自带方案
// 发现windows自带方案模糊。
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
获取qt/etc/xx.conf 方案。
有大神知道,有没有好的解决办法?


#1 [20091001753 02-21 17:43]
widget?qml?
最好能说一下,出问题的是什么控件。
#2 [wanger233 02-22 10:23]
字体随dpi设置放大试试
下面是大佬总结的
//方法1:在main函数的最前面加上下面这句 5.6版本才开始有这个函数
#if (QT_VERSION > QT_VERSION_CHECK(5,6,0))
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
//开启高缩放支持以后图片可能发虚还要开启下面这个属性
QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
#endif
//方法2:在可执行文件同目录下新建文件 qt.conf 填入下面内容
WindowsArguments = dpiawareness=0
//下面这行用来解决Qt高DPI下文字显示有锯齿的问题
WindowsArguments = fontengine=freetype
//2023-2-2 经过建波(简称JB大佬)亲测两行分开写没有效果,需要逗号分开
WindowsArguments = dpiawareness=0, fontengine=freetype
//方法3:在main函数最前面设置Qt内部的环境变量
qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1.5");
//方法4:新版本的Qt比如Qt5.14修正了对高分屏的处理支持不是整数的缩放
qputenv("QT_ENABLE_HIGHDPI_SCALING", "1");
QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
//禁用缩放
//测试发现AA_Use96Dpi属性在Qt5.9以上版本完全正常,以下版本比如5.7有部分控件在175%缩放不正常比如QTextEdit,需要外层套个widget才行。
#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))
QApplication::setAttribute(Qt::AA_Use96Dpi);
#endif
#if (QT_VERSION >= QT_VERSION_CHECK(5,14,0))
QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::Floor);
#endif

回复 发表
主题 版块