6

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

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

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

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

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

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

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

4

2 回答 2

10

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

文档指出 QFontMetrics::horizo​​ntalAdvance(QChar) 直到Qt5.11 才可用

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

于 2018-07-04T19:45:12.953 回答
3

您可以使用width而不是horizontalAdvance.

成员函数widthQFontMetrics 的过时成员中列出,它建议使用horizontalAdvance而不是width. 我猜这两个成员函数具有相似的行为。

于 2020-08-29T11:06:58.477 回答