Russian Qt Forum
Ноябрь 25, 2024, 14:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QLabel. Ширина  (Прочитано 9430 раз)
star62
Гость
« : Январь 11, 2009, 15:19 »

Добрый день. Такая проблема. Надо узнать какую задать ширину QLabel, чтобы в него уместилась строка которую он отображает.
Вычислить ширину строки со всеми параметрами шрифта, размера и т.д. которые настроены в QLabel.

У меня программно меняется текст в метке и иногда он не вмещается в ее размер. Надо исправить, но не пойму как.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Январь 11, 2009, 15:23 »

У меня программно меняется текст в метке и иногда он не вмещается в ее размер. Надо исправить, но не пойму как.
Метка сама регулирует свой размер, если политика размера по умолчанию, а не фиксировнная.
Записан

Юра.
Dendy
Гость
« Ответ #2 : Январь 11, 2009, 14:55 »

Метка сама регулирует свой размер, если политика размера по умолчанию, а не фиксировнная.

И размер окна будет сам прыгать. Или соседние элементы двигаться туда-сюда.

Автору. Возможно поможет:

Код:
label->setMinimumWidth( QFontMetrics( label->font() ).width( "widest string that label should contain" ) );
Записан
sLiva
Гость
« Ответ #3 : Январь 11, 2009, 16:56 »

можно это попробовать:

Код
C++ (Qt)
void QWidget::adjustSize()
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Январь 11, 2009, 18:11 »

И размер окна будет сам прыгать. Или соседние элементы двигаться туда-сюда.
А в случае если руками (в коде) изменять размер, то таких эфектов не будет? Подмигивающий
Записан

Юра.
Dendy
Гость
« Ответ #5 : Январь 11, 2009, 18:26 »

А в случае если руками (в коде) изменять размер, то таких эфектов не будет? Подмигивающий

Будут. От этого и избавляемся установкой минимальной ширины. Я бы даже рекомендовал: QWidget::setFixedWidth().
Записан
Hordi
Гость
« Ответ #6 : Январь 12, 2009, 10:08 »

QLabel label;
QRect r = QFontMetrics(label.font(),&label).boundingRect("XXX");
label.resize(r.width(),r.height());
Записан
star62
Гость
« Ответ #7 : Январь 15, 2009, 10:19 »

Всем спасибо большое. Я решил эту задачу через setGeometry(), а там для ширины использую sizeHint().width() и updateGeometry().

Предлагаемые варианты тоже хороши.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.094 секунд. Запросов: 23.