繁体   English   中英

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

[英]Design user interfaces with automatically scaling fontsizes in Qt

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

如果要为某个元素使用较大的字体,并在“设计”屏幕上进行设置,似乎没有办法说“两倍大”。 相反,它将注入具有绝对磅值的font属性。

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

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

我已经设置了应用程序的样式表,以将较大的字体用于QMessageBox。 但感觉很丑,我不确定如何自动触发它。

编辑:

手动设置环境变量

declare -x QT_SCALE_FACTOR=2

确实会引起我正在寻找的那种行为。 但是如何仅在High DPI环境上自动执行此操作,最好在程序本身内部执行。 (我猜setenv (3)可以在Linux下工作)

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

  • 从官方网站(而非apt)下载并安装Qt5.11。
  • 打开~/.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。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM