Поиск:

Ответ в темуСоздание новой темы Создание опроса
> пиксельная ширина текста 
V
    Опции темы
kuvshinka
Дата 4.3.2013, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



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

Это сообщение отредактировал(а) kuvshinka - 4.3.2013, 21:25
PM MAIL   Вверх
math64
Дата 4.3.2013, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Ширина буквы Ш будет шире средней, буквы i - уже. Поэтому измерять нужно ширину всей строки.
см. класс QFontMetrics.
PM   Вверх
kuvshinka
Дата 4.3.2013, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



math64: подскажите пож-та пример....я знаю только как узнать символьную ширину строки (типа text().length())...
PM MAIL   Вверх
math64
Дата 5.3.2013, 07:22 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Код

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

А так - label сама знает, какая ширина ей нужна - не мешайте ей в этом, используйте layout.
PM   Вверх
math64
Дата 5.3.2013, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



PS: причём ширина строки не равна сумме ширин составляющих её букв (например, для наклонного шрифта). Тескт может вылезать влево - в этом случае r.left() будет отрицательным.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0963 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.