0

Qt 5.7 声称改进了高 DPI 支持。使用现代 Qt,可以创建一个应用程序启动器,例如:

#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 在表单布局工具中为其分配的大小。

如果您想为某些元素设置更大的字体,并在表单设计屏幕中设置它,似乎没有办法说“两倍大”。相反,它会注入一个具有绝对磅值的字体属性。

QMessageBox 静态方法似乎也一样。显示一个静态 QMessageBox,就像QMessageBox::info它的文本和图标不会放大以补偿高 dpi。

那么究竟应该怎么做才能让在 Creator 中以标准 DPI 设计的 Qt 应用程序自动适应高 DPI 环境、字体、QMessageBoxes 等等。

我已经获得了一些牵引力,将应用程序的样式表设置为对 QMessageBox 使用更大的字体。但感觉很难看,我不知道如何自动触发它。

编辑:

手动设置环境变量

declare -x QT_SCALE_FACTOR=2

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

4

1 回答 1

2

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

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

在此处输入图像描述

于 2018-06-04T14:54:40.183 回答