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

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

本文关键字:代码 编辑器 实现 QFontMetrics horizontalAdvance Qt      更新时间:2023-10-16

我正在为一种简单的脚本语言实现代码编辑器,并一直使用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。我已经在标题中搜索了缺少的方法,但只找到了QTextLine::horizontalAdvance()这不是我需要的方法。

我已经将QFontMetrics::horizontalAdvance(QChar)调用替换为对QFontMetrics::width(QChar)的调用,该调用适用于我当前的字体(Consolas(,但我不确定是否适用于每种可能的字体。

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

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

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

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

文档指出,QFontMetrics::horizontalAdvance(QChar(直到Qt5.11才可用。

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

您可以使用width而不是horizontalAdvance

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