QFontMetrics::horizontalAdvance() Qt отсутствует для реализации редактора кода

Я реализую редактор кода для простого языка сценариев и использую пример редактора кода 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, но в моей реализации этот метод отсутствует.

Я использую Qt 5.10.1 'msvc2017_64' в Windows 10 с Visual Studio Enterprise 2017 версии 15.7.3. Я искал заголовки для отсутствующего метода, но нашел только QTextLine::horizontalAdvance(), который мне не нужен.

Я заменил вызов QFontMetrics::horizontalAdvance(QChar) вызовом QFontMetrics::width(QChar), который работает с моим текущим шрифтом (Consolas), но я не уверен, что это нормально для каждого возможного шрифта.

Вопрос 1) Был ли QFontMetrics::horizontalAdvance() удален из текущей версии Qt, моя установка глючит или я что-то пропустил?

Вопрос 2) Как правильно получить аванс за конкретный (не пропорциональный) шрифт?

Спасибо, что читаете это и пытаетесь помочь!


person Andreas H.    schedule 14.06.2018    source источник
comment
В документации указано, что QFontMetrics::horizontalAdvance(QChar) не было доступно до Qt5. 11.   -  person G.M.    schedule 14.06.2018
comment
О, да! Я думал, что пример редактора кода существует уже некоторое время и даже не проверял в этом направлении. Большое спасибо! Я бы принял ваш ответ, если бы вы его написали :)   -  person Andreas H.    schedule 14.06.2018


Ответы (2)


Как сказал мне G.M. в комментарии:

В документации указано, что QFontMetrics::horizontalAdvance(QChar) не недоступно до Qt5.11.

Поэтому переход на Qt 5.11 решает эту проблему.

person Andreas H.    schedule 04.07.2018

Вы можете использовать width вместо horizontalAdvance.

Функция-член width указана в списке Устаревшие члены для QFontMetrics и он предлагает использовать horizontalAdvance вместо width. Я предполагаю, что эти две функции-члены имеют похожее поведение.

person kamae    schedule 29.08.2020