Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: spbtellurian от Январь 26, 2010, 12:08



Название: QLabel Как выставить ширину по содержимому ?
Отправлено: spbtellurian от Январь 26, 2010, 12:08
QLabel Как выставить ширину по содержимому  ???


Название: Re: QLabel Как выставить ширину по содержимому ?
Отправлено: Kolobok от Январь 26, 2010, 12:10
Код:
setScaledContents( false );


Название: Re: QLabel Как выставить ширину по содержимому ?
Отправлено: SABROG от Январь 26, 2010, 12:42
Код:
setScaledContents( false );

Он и так false по умолчанию.


Название: Re: QLabel Как выставить ширину по содержимому ?
Отправлено: spbtellurian от Январь 26, 2010, 13:01
хорошо зайдём с другой стороны

Как узнать необходимую ширину виджета?
Допустим есть текст
QString str = "sample text"
беру узнаю ширину текста
fontMetrics().boundingRect(str).width();
все отступы до которых удолось достучаться у QLabel выдают нули, однако текст целиком в Qlablel не влазит.


Название: Re: QLabel Как выставить ширину по содержимому ?
Отправлено: DS_tm от Январь 26, 2010, 13:15
для QLabel переопределен sizeHint, может в нем дело?


Название: Re: QLabel Как выставить ширину по содержимому ?
Отправлено: DS_tm от Январь 26, 2010, 13:17
А вообще QWidget::adjustSize()

Цитировать
Adjusts the size of the widget to fit its contents.


Название: Re: QLabel Как выставить ширину по содержимому ?
Отправлено: spbtellurian от Январь 26, 2010, 13:57
adjustSize() кстати говоря да. слона то и не уивдел ::)
НО! как выяснилось в некоторых случаях могут быть проблемы с кирилицей. Т.е. ставим текст латиницей всё ок, подменяем латинский текст на кирилицу и текст не влазит.


Название: Re: QLabel Как выставить ширину по содержимому ?
Отправлено: BRE от Январь 26, 2010, 14:03
Поменял на кириллицу сделай еще раз adjustSize().
Ширина у букв разная, количество букв, тоже разная.  :)


Название: Re: QLabel Как выставить ширину по содержимому ?
Отправлено: spbtellurian от Январь 26, 2010, 17:56
хорошо скажу по другому елси в прошлый раз выразился не точно
заменяю строчку
str = "test"
на
строчку
str = "тест"
собираю проект и получаю фигу - текст обрезан


Название: Re: QLabel Как выставить ширину по содержимому ?
Отправлено: SABROG от Январь 26, 2010, 17:57
собираю проект и получаю фигу - текст обрезан

adjustSize() должен вызываться тобой динамически во время работы приложения каждый раз, когда меняется содержимое QLabel...

Т.е. во время запуска программы нужно вызывать adjustSize(), т.к. QLabel имеет те размеры, которые были установлены дизайнером.


Название: Re: QLabel Как выставить ширину по содержимому ?
Отправлено: BRE от Январь 26, 2010, 18:08
хорошо скажу по другому елси в прошлый раз выразился не точно
заменяю строчку
str = "test"
на
строчку
str = "тест"
собираю проект и получаю фигу - текст обрезан
Не знаю правда, какой у тебя сейчас фонт стоит в браузере, но у меня видно не вооруженным глазом, что слово "test" уже "тест".
Ширина букв разная, поэтому изменил строку -> adjustSize().


Название: Re: QLabel Как выставить ширину по содержимому ?
Отправлено: Kolobok от Январь 26, 2010, 22:52
Засунь QLabel в лейаут и будет тебе счастье