代码编辑器实现缺少 Qt 的 QFontMetrics::horizontalAdvance()

Qt's QFontMetrics::horizontalAdvance() missing for Code Editor Implementation

我正在为一种简单的脚本语言实现一个代码编辑器,并且一直在使用 Qt 代码编辑器示例 (http://doc.qt.io/qt-5/qtwidgets-widgets-codeeditor-example.html) 作为实现带有行号的 QPlainTextEdit 的指南。该示例使用基本小部件的 fontMetrics() 方法 'horizontalAdvance' 来查询单个字符的宽度(或更好的前进)。

方法QFontMetrics::horizontalAdvance(QChar)(参见http://doc.qt.io/qt-5/qfontmetrics.html#horizontalAdvance-1)可以在Qt文档中找到但是我的实现似乎缺少这个方法

我在 Windows 10 上使用 Qt 5.10.1 'msvc2017_64' 和 Visual Studio Enterprise 2017 版本 15.7.3。我在 headers 中搜索了缺少的方法,但只找到了 QTextLine::horizontalAdvance() 这不是我需要的。

我已将 QFontMetrics::horizontalAdvance(QChar) 调用替换为对 QFontMetrics::width(QChar) 的调用,该调用与我当前的字体 (Consolas) 兼容,但我不确定它是否适用于所有可能的字体。

问题 1) QFontMetrics::horizontalAdvance() 是否已从当前版本的 Qt 中删除,是我的安装有问题还是遗漏了什么?

问题 2) 获得特定(非比例)字体预付款的正确方法是什么?

感谢您阅读本文并尝试提供帮助!

正如 G.M. 在评论中告诉我的那样:

The documentation states that QFontMetrics::horizontalAdvance(QChar) wasn't available until Qt5.11.

所以切换到 Qt 5.11 解决了这个问题。

您可以使用 width 而不是 horizontalAdvance

成员函数width列在 Obsolete Members for QFontMetrics 并且它建议使用 horizontalAdvance 而不是 width。 我猜这两个成员函数有相似的行为。