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下工作)