设计用户界面,在Qt中自动缩放字体大小

时间:2016-10-18 18:50:50

标签: c++ linux qt highdpi

Qt 5.7声称已经提高了高DPI支持率。使用现代Qt,可以创建一个app启动器,如:

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    QApplication app(argc, argv);   
    return app.exec();
}

我希望UI能够在高DPI下运行时自动缩放,但缩放并不一定按预期工作。至少它没有在Linux下为我扩展UI。我所看到的是布局扩大了,但字体保持原样,Qt Creator在表单布局工具中分配它们的大小。

如果你想要一个更大尺寸的字体用于某个元素,并且你在表单设计屏幕中设置它,似乎没有办法说&#34;两倍大&#34;。相反,它会注入一个绝对磅值的字体属性。

QMessageBox静态方法似乎也是一样的。显示静态QMessageBox,如QMessageBox::info,其文本和图标不会按比例放大以补偿高dpi。

所以你应该做些什么才能让你的Qt应用程序(在Creator中以标准DPI设计)自动适应高DPI环境,字体,QMessageBox等等。

我已经有一些牵引力设置应用程序的样式表为QMessageBox使用更大的字体。但感觉很难看,而且我不确定如何自动触发它。

编辑:

手动设置环境变量

declare -x QT_SCALE_FACTOR=2

似乎调用了我正在寻找的那种行为。但是如何仅在高DPI环境下自动执行,最好是在程序本身内部。 (setenv (3)可以在Linux下工作,我猜)

1 个答案:

答案 0 :(得分:1)

从Qt5.11开始,对于我的带有4k屏幕的Ubuntu 18.04笔记本电脑来说,以下内容似乎已经足够了:

  • 从官方网站(而非apt)下载并安装Qt5.11。
  • 打开~/.local/share/applications/DigiaQt-qtcreator-community.desktop文件。
  • 将行Exec=/path/to/Qt/Tools/QtCreator/bin/qtcreator更改为Exec=env QT_AUTO_SCREEN_SCALE_FACTOR=1 /path/to/Qt/Tools/QtCreator/bin/qtcreator
  • 重启Qt Creator。

enter image description here