Подтвердить что ты не робот

Измерение ширины текста в Qt

Используя структуру Qt, как я могу измерить ширину (в пикселях) фрагмента текста, созданного с заданным шрифтом/стилем?

4b9b3361

Ответ 1

Вы можете использовать QFontMetrics класс - см. width(), который может дать вам ширину заданного QString.

QFont myFont(fontName, fontSize);;
QString str("I wonder how wide this is?");

QFontMetrics fm(myFont);
int width=fm.width(str);

Ответ 2

В paintEvent

QString text("text");
QFontMetrics fm = painter.fontMetrics();
int width = fm.width(text);

Ответ 3

В качестве дополнения к ответу @Paul я обнаружил, что при рисовании текста (Qt4.8 на linux) ширина фактически окрашенного текста по сравнению с шириной возврата QFontMetrics::boundingRect часто отключается. В моих случаях картина часто была слишком широкой.

Если вы хотите получить точные результаты при рисовании текста (например, для размерных прямоугольников, которые вы рисуете вокруг текста), лучше используйте функции boundingRect, предоставляемые непосредственно QPainter.