MyTetra Share
Делитесь знаниями!
Как изменить размер шрифтов, иконок и экранных элементов в Qt-приложении?
Время создания: 21.01.2025 18:05
Текстовые метки: linux, qt, настройка, изменить, размер, масштаб, dpi, шрифт, иконка, надпись, системная, тема, оформление, x11, DE, рабочий, стол
Раздел: Компьютер - Программирование - Язык C++ (Си++) - Библиотека Qt - Графика
Запись: xintrea/mytetra_syncro/master/base/1737471918b9e5o4uhyf/text.html на raw.github.com

Часто бывает так, что Qt-приложение, особенно установленное из сторонних источников, не воспринимает системную тему оформления и не использует размеры шрифтов, которые заданы в настройках графической среды. Из-за этого шрифты и иконки в приложении выглядят слишком мелко или слишком крупно. Как можно изменить масштабирование этих экранных элементов в уже собранном Qt-приложении?


Начиная с версии 5.6 и выше работает следующий рецепт. Перед вызовом Qt-приложения надо установить специальные переменные окружения, которые автоматически обрабатывает любое Qt-приложение.



export QT_AUTO_SCREEN_SCALE_FACTOR=0

export QT_ENABLE_HIGHDPI_SCALING=0

export QT_SCALE_FACTOR=2.0

export QT_FONT_DPI=120

qtapp параметры_приложения



Или в одну строку:



env QT_AUTO_SCREEN_SCALE_FACTOR=0 QT_ENABLE_HIGHDPI_SCALING=0 QT_SCALE_FACTOR=2.0 QT_FONT_DPI=120 qtapp параметры_приложения



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


Переменная QT_SCALE_FACTOR задается в виде числа с плавающей точкой. Это коэффициент масштабирования. Лучше его задавать в виде целых значений. Если значение будет не целое, тогда в интерфейсе при перемещении, например, всяких линий разделения виджетов, будет видно, что линии в какой-то момент пропадают и появляются. При целых значениях такого не наблюдается.


Переменная QT_FONT_DPI задает DPI, в котором будут рендериться шрифты. Обычно, QT_SCALE_FACTOR задается как 2.0, чтобы иконки увеличились ровно в два раза и все экранные элементы выглядели четко из-за целочисленного масштабирования. А через QT_FONT_DPI регулируется размер надписей.


Так же в этом разделе:
 
MyTetra Share v.0.67
Яндекс индекс цитирования