Проектирование пользовательских интерфейсов с автоматическим масштабированием размеров шрифтов в 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();
}

Я ожидаю, что пользовательский интерфейс будет автоматически масштабироваться при работе с высоким DPI, но масштабирование не обязательно будет работать должным образом. По крайней мере, он не масштабируется для меня под Linux. Я вижу, что макет масштабируется, но шрифты остаются там, где они были, в тех размерах, которые Qt Creator назначил им в инструменте макета формы.

Если вы хотите увеличить шрифт большего размера для какого-либо элемента и установить его на экране «Дизайн формы», кажется, нет способа сказать «в два раза больше». Вместо этого он вводит свойство шрифта с абсолютным размером точки.

Похоже, то же самое относится и к статическим методам QMessageBox. Отображение статического QMessageBox, например QMessageBox::info и его текст и значок не увеличиваются, чтобы компенсировать высокое dpi.

Итак, что именно вы должны сделать, чтобы ваше приложение Qt, разработанное в Creator со стандартным DPI, автоматически настраивалось на среду с высоким DPI, шрифты, QMessageBoxes и все остальное.

Я получил некоторую тягу, настраивая таблицу стилей приложения, чтобы использовать больший шрифт для QMessageBox. но это кажется уродливым, и я не уверен, как вызвать его автоматически.

РЕДАКТИРОВАТЬ:

Ручная настройка переменной среды

declare -x QT_SCALE_FACTOR=2

Кажется, вызывает то поведение, которое я ищу. Но как сделать это автоматически только в среде с высоким разрешением, и желательно внутри самой программы. ( setenv (3) может работать под Linux, наверное)

0

Решение

Начиная с Qt5.11, для моего ноутбука Ubuntu 18.04 с экраном 4k кажется достаточно хорошим:

  • Скачайте и установите Qt5.11 с официального сайта (не из apt).
  • Открой ~/.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.

введите описание изображения здесь

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]