QFontMetrics::horizontalAdvance() возвращает противоречивые результаты

Я работаю над функцией, которая определяет максимальное количество символов, которые могут поместиться в заданную ширину (в пикселях), на основе самого широкого символа в строке, а затем соответствующим образом обрезает строку. Я использую метод horizontalAdvance QFontMetrics и заметил некоторые несоответствия.

Возьмем, к примеру, следующий код:

      QFont        myFont("Times New Roman", 12);
QFontMetrics fm(myFont);
qDebug() << "Width of 'w': " << fm.horizontalAdvance('w');
qDebug() << "Width of 'wwww': " << fm.horizontalAdvance("wwww");

Выход

      Width of 'w':  9
Width of 'wwww':  35

Вы ожидаете, что ширина второго будет 36, верно? Интересно, что добавление одной буквы «w» во вторую строку дает:

      Width of 'w':  9
Width of 'wwwww':  43

Должно быть 45. HorizontalAdvance возвращает целое число, потому что оно измеряется в пикселях, но похоже, что где-то при вычислении теряется десятичное значение.

Это ошибка или я что-то упускаю?

0 ответов

Другие вопросы по тегам