Как указать моноширинные шрифты для кросс-платформенных приложений Qt?

Существует ли независимый от платформы способ указать шрифт с фиксированной шириной для виджета Qt?

Если я установил шрифт в "Monospace" в Designer в Linux, он не будет найден в Windows, и вместо него будет использоваться Arial.

Ответ 1

Вы можете восстановить фиксированный шрифт по умолчанию, используя функцию QFontDatabase systemFont (..). Он был введен в Qt 5.2.

Пример:

const QFont fixedFont = QFontDatabase::systemFont(QFontDatabase::FixedFont)

Ответ 2

Вы можете использовать свойство style hint свойства QFont:

QFont font("Monospace");
font.setStyleHint(QFont::TypeWriter);

Если шрифт не найден (что происходит с Monospace в Windows), Qt алгоритм сопоставления шрифтов пытается найти шрифт, соответствующий данному стиль подсказки.

Ответ 3

Для всех виджетов, которые принимают Rich Text, вы можете просто поместить его в блок pre, т.е. <pre>This is my Text</pre>. Затем он будет использовать системный моноширинный шрифт.

Ответ 4

Я использую Courier в Qt как для Linux, так и для Windows.

Ответ 5

Я новичок, поэтому не могу комментировать, но могу подтвердить, что приведенное выше предложение Courier QtGui.QFont('courier') работает и на MacOS, в то время как другие методы помогли мне на Linux, но не на Mac