Я реализую редактор кода для простого языка сценариев и использую пример редактора кода Qt (http://doc.qt.io/qt-5/qtwidgets-widgets-codeeditor-example.html) в качестве руководства для реализации QPlainTextEdit с номерами строк. В этом примере метод fontMetrics () базового виджета «горизонтальный_представитель» используется для запроса ширины (или, лучше, продвижения) одного символа.
Метод 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) Как правильно получить аванс за определенный (непропорциональный) шрифт?
Спасибо, что прочитали это и пытаетесь помочь!
Как Гендиректор сказал мне в комментарии:
В документации говорится, что QFontMetrics :: horizontalAdvance (QChar) не был доступен до Qt5.11.
Так что переход на Qt 5.11 решает эту проблему.
Других решений пока нет …