如何解决 Qt 应用程序的 HiDPI 问题

如何解决 Qt 应用程序的 HiDPI 问题

xrandr --dpi 166我最近开始在我的新笔记本电脑上使用命令运行Ubuntu 16.04.3 64 位注意到否则系统会自动使用 96 dpi。

然而,如此高的 dpi 设置会导致菜单和工具栏变得非常大仅适用于 Qt 应用程序我有 Master PDF Editor、digiKam 和 Krita(后两者是 AppImage 格式)。在 Java 或 WINE 环境中运行的其他应用程序不会出现此类问题。

我希望找到一种方法来手动输入 Qt 应用程序的特定 dpi 设置或其他方法来解决此问题。

如果没有办法为 Qt 应用程序全局指定 dpi 设置,那么在xrandr --dpi 96应用程序之前输入一个简单的包装脚本并在之后恢复初始 dpi 设置也可以做到……

答案1

我发现一个不太完美的临时解决方案是以下简单的包装器 bash 脚本,它可以在相关的 .desktop 文件中使用,而不是相关应用程序的可执行文件,例如masterpdfeditor4

#!/bin/bash
HiDPI="$(xdpyinfo | grep dots | awk -F'x' '{print $2}' | awk -F' ' '{print $1}')"
if [[ ! $HiDPI = 96 ]]
then
    xrandr --dpi 96
    masterpdfeditor4 "$@"
    xrandr --dpi $HiDPI
else
    masterpdfeditor4 "$@"
fi

仅当打开和关闭一个这样的应用程序时,或者在启动多个这样的应用程序时,仅当最后关闭第一个应用程序时,才会恢复原始 dpi 设置。

其次,菜单和工具栏之外的一些 GUI 元素无法以这种方式修复,例如 Krita 工作区中的光标大小……

答案2

QT_AUTO_SCREEN_SCALE_FACTOR通过调整一些 Qt 环境变量(即和 ),我能够获得相当不错的结果QT_SCALE_FACTOR。您可以选择自己的值,可能更适合您的情况:

$ QT_AUTO_SCREEN_SCALE_FACTOR=0 QT_SCALE_FACTOR=1.1 virtualbox

关于 Qt vars 的更多信息可以在这里找到:https://doc.qt.io/qt-6.2/highdpi.html

相关内容