Как указать моноширинные шрифты для кроссплатформенных приложений 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>, Затем он будет использовать системный моноширинный шрифт.

Я использую Courier в Qt на Linux и Windows.

Другие вопросы по тегам