Qt的QFontMetrics :: horizo​​ntalAdvance()在代码编辑器实现中丢失

And*_* H. 3 c++ qt visual-studio-2017 qt5.10

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

可以在Qt文档中找到该方法QFontMetrics::horizontalAdvance(QChar)(请参阅http://doc.qt.io/qt-5/qfontmetrics.html#horizo​​ntalAdvance-1),但我的实现似乎缺少此方法

我在Windows 10和Visual Studio Enterprise 2017版本15.7.3上使用Qt 5.10.1'msvc2017_64'。我已经搜索了缺少的方法的标题,但是只发现了QTextLine::horizontalAdvance()那不是我所需要的。

我已将QFontMetrics::horizontalAdvance(QChar)呼叫替换QFontMetrics::width(QChar)为正在使用我的当前字体(Consolas)的呼叫,但是我不确定每种可能的字体是否都可以。

问题1)QFontMetrics :: horizo​​ntalAdvance()是否已从当前版本的Qt中删除,我的安装是否有问题或错过了什么?

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

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

And*_* H. 5

正如通用汽车在评论中告诉我的那样:

该文档指出QFontMetrics :: horizo​​ntalAdvance(QChar)在Qt5.11之前不可用

因此,切换到Qt 5.11可以解决此问题。


kam*_*mae 5

您可以使用width而不是horizontalAdvance.

该成员函数width列在 QFontMetrics 的过时成员中,建议使用horizontalAdvance而不是width. 我猜这两个成员函数有类似的行为。