• 912阅读
  • 2回复

windows 屏幕下,qt程序模拟奇妙的文字拥挤在一起 [复制链接]

上一主题 下一主题
离线onlyone
 

只看楼主 倒序阅读 楼主  发表于: 2023-02-21
不是必现,在某些笔记本,或者dpi高的机器上,qt的记事本程序。
文字没有展开,错叠在一起了。
已经尝试如下方案:

    //可以防止某些屏幕下的字体拥挤重叠问题。暂时屏蔽,不使用qt方法,使用windows自带方案
    // 发现windows自带方案模糊。
    QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
获取qt/etc/xx.conf 方案。

有大神知道,有没有好的解决办法?

离线20091001753

只看该作者 1楼 发表于: 2023-02-21
widget?qml?
最好能说一下,出问题的是什么控件。
(づ ̄ 3 ̄)づ
离线wanger233

只看该作者 2楼 发表于: 2023-02-22
字体随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 填入下面内容
[Platforms]
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
快速回复
限100 字节
 
上一个 下一个