Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > пиксельная ширина текста


Автор: kuvshinka 4.3.2013, 21:22
Есть некая строка stroka="privet vsem", которая выводится в лейбл. Вопрос — как узнать  пиксельную ширину строки stroka? (по идее надо символьную длину строки stroka умножить на пиксельную ширину одного символа, но как узнать эту односимвольную пиксельную ширину?) просто мне ширину лейбла надо подогнать под ширину выводимой в него строки...размер шрифта, используемый в лейбле, известен (если он тут вообще нужен)...    

Автор: math64 4.3.2013, 21:39
Ширина буквы Ш будет шире средней, буквы i - уже. Поэтому измерять нужно ширину всей строки.
см. класс QFontMetrics.

Автор: kuvshinka 4.3.2013, 21:42
math64: подскажите пож-та пример....я знаю только как узнать символьную ширину строки (типа text().length())...

Автор: math64 5.3.2013, 07:22
Код

QFont font = label->font();
QString text = label->text();
QFontMetrics fm(font);
QRectF r = fm.boundingRect(text);
double width = r.width();

А так - label сама знает, какая ширина ей нужна - не мешайте ей в этом, используйте layout.

Автор: math64 5.3.2013, 07:49
PS: причём ширина строки не равна сумме ширин составляющих её букв (например, для наклонного шрифта). Тескт может вылезать влево - в этом случае r.left() будет отрицательным.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)