I'm implementing a code editor for a simple scripting language and have been using the Qt Code Editor Example (http://doc.qt.io/qt-5/qtwidgets-widgets-codeeditor-example.html) as a guide for implementing a QPlainTextEdit with line numbers. The example uses the base widget's fontMetrics() method 'horizontalAdvance' to query the width (or better the advance) of a single character.
The method QFontMetrics::horizontalAdvance(QChar) (see http://doc.qt.io/qt-5/qfontmetrics.html#horizontalAdvance-1) can be found in the Qt documentation but my implementation seems to be missing this method.
I am using Qt 5.10.1 'msvc2017_64' on Windows 10 with Visual Studio Enterprise 2017 Version 15.7.3. I have searched the headers for the missing method, but only found QTextLine::horizontalAdvance() which is not what I need.
I have replaced the QFontMetrics::horizontalAdvance(QChar) call with a call to QFontMetrics::width(QChar) which is working with my current font (Consolas) but I am not sure if its ok for every possible font.
Question 1) Has QFontMetrics::horizontalAdvance() been removed from current version of Qt, is my installation buggy or have I missed something?
Question 2) What is the correct way of getting the advance for a specific (non propotional) font?
Thank you for reading this and trying to help!
As G.M. told me in a comment:
The documentation states that QFontMetrics::horizontalAdvance(QChar) wasn't available until Qt5.11.
So switching to Qt 5.11 fixes this problem.
You might use width instead of horizontalAdvance.
The member function width is listed in
Obsolete Members for QFontMetrics and it suggests to use horizontalAdvance instead of width.
I guess these two member functions have a similar behaviour.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With