How to specify monospace fonts for cross platform

2020-01-30 18:19发布

问题:

Is there a platform independent way to specify a fixed width font for a Qt widget ?

If I set the font to "Monospace" in Designer on Linux, it is not found on Windows and Arial is used instead.

回答1:

You can retrieve the system's default fixed font using QFontDatabase's systemFont(..) function. It was introduced in Qt 5.2.

Example:

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


回答2:

You can use the style hint property of QFont:

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

If the font cannot be found (which happens with Monospace on Windows), Qt's font matching algorithm tries to find a font that matches the given style hint.



回答3:

For all widgets that accept Rich Text you can simply put it into a pre block, i.e. <pre>This is my Text</pre>. It will then use the systems monospace font.



回答4:

I use Courier in Qt on both Linux and Windows.



标签: qt fonts