How to specify monospace fonts for cross platform Qt applications?

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.


Solution 1:

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.

Solution 2:

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)

Solution 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.

Solution 4:

I use Courier in Qt on both Linux and Windows.