Как указать моноширинные шрифты для кроссплатформенных приложений Qt?
Есть ли независимый от платформы способ указать шрифт фиксированной ширины для виджета Qt?
Если я установлю шрифт "Monospace" в Designer на Linux, он не будет найден в Windows, и вместо него будет использоваться Arial.
4 ответа
Вы можете получить системный фиксированный шрифт по умолчанию, используя функцию systemFont(..) QFontDatabase. Он был введен в Qt 5.2.
Пример:
const QFont fixedFont = QFontDatabase::systemFont(QFontDatabase::FixedFont)
Вы можете использовать свойство подсказки стиля QFont:
QFont font("Monospace");
font.setStyleHint(QFont::TypeWriter);
Если шрифт не может быть найден (что происходит с Monospace в Windows), алгоритм сопоставления шрифтов Qt пытается найти шрифт, соответствующий данной подсказке стиля.
Для всех виджетов, которые принимают Rich Text, вы можете просто поместить его в pre
блок, т.е. <pre>This is my Text</pre>
, Затем он будет использовать системный моноширинный шрифт.