Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: DenTNT от Март 02, 2011, 21:11



Название: Фиксированный размер ширины виджета
Отправлено: DenTNT от Март 02, 2011, 21:11
Я только недавно столкнулся с Qt, поэтому вопрос может быть нубский...
В главном окне есть 2 виджета, один из которых QListWidget, второй служит для вывода информации, пусть будет QLabel.
Хотелось бы, чтобы при масштабировании окна ширина QListWidget оставалась постоянной, менялась только высота. Размеры же второго виджета масштабировались согласно оставшемуся месту. Например, ширина главного окна минус ширина QListWidget, а по высоте масштабировалась по всему свободному пространству:
(http://pics.qip.ru/1045FpC.jpg)
Сейчас это выглядит так:
(http://pics.qip.ru/1045FpO.jpg)
Буду признателен за помощь!


Название: Re: Фиксированный размер ширины виджета
Отправлено: Fat-Zer от Март 02, 2011, 21:21
1) смотреть примеры/читать про лейауты в асистенте.
2) после п. 1 если не всё будет устраивать, то поэксперементировать со свойством  sizePolicy дочерних виджетов.


Название: Re: Фиксированный размер ширины виджета
Отправлено: deaks от Март 02, 2011, 21:51
В дизайнере используйте например grid layout и регулируйте максимальные-минимальные размеры виджетов


Название: Re: Фиксированный размер ширины виджета
Отправлено: DenTNT от Март 03, 2011, 15:47
Ладно, не буду "прилеплять" виджет к правой границе окна, но остается вопрос, как в дизайнере "разрешить" границам виджета масштабироваться?
Ставлю в sizePolicy значение fixed для нужного мне виджета, все работает как хочу, но для второго виджета ставлю Expanding, но при изменении геометрии окна, размеры виджета не меняются...


Название: Re: Фиксированный размер ширины виджета
Отправлено: Alex Custov от Март 03, 2011, 16:42
В дизайнере используйте например grid layout и регулируйте максимальные-минимальные размеры виджетов


Название: Re: Фиксированный размер ширины виджета
Отправлено: DenTNT от Март 03, 2011, 18:16
1. Qt Designer -> Файл -> Новый -> Main Window -> Создать
2. Добавляю List Widget
3. Делаю minimumSize и maximumSize ширину по 100

Вопрос: Что нужно сделать, чтобы высота этого виджета автоматически изменялась в зависимости от высоты главного окна?
P.S. С Layout'ами поигрался, но желаемого эффекта не добился  :-\


Название: Re: Фиксированный размер ширины виджета
Отправлено: shirushizo от Март 03, 2011, 19:57
Создаешь QHBoxLauoyt на него кидай оба виджета. minimumWidth/maximumWidth устанавливай в 100, или программно в конструкторе setFixetWidth. Если надо QMainWindow, то QHBoxLauoyt помещаешь на виджет и устанавливаешь виджет центральным.


Название: Re: Фиксированный размер ширины виджета
Отправлено: Alex Custov от Март 03, 2011, 21:26
P.S. С Layout'ами поигрался, но желаемого эффекта не добился  :-\

Как конкретно? Тебе нужно просто щёлкнуть по пустому пространству главной формы и выбрать на тулбаре в Designer "Сгруппировать по сетке" (Layout in grid). Неужели это всё так сложно?


Название: Re: Фиксированный размер ширины виджета
Отправлено: DenTNT от Март 03, 2011, 23:09
Создаешь QHBoxLauoyt на него кидай оба виджета. minimumWidth/maximumWidth устанавливай в 100, или программно в конструкторе setFixetWidth. Если надо QMainWindow, то QHBoxLauoyt помещаешь на виджет и устанавливаешь виджет центральным.
Как конкретно? Тебе нужно просто щёлкнуть по пустому пространству главной формы и выбрать на тулбаре в Designer "Сгруппировать по сетке" (Layout in grid). Неужели это всё так сложно?
Хотелось бы, чтобы QList был прижат к левой границе главного окна, но получилось вот как:
(http://pics.qip.ru/101o3LQ.jpg)


Название: Re: Фиксированный размер ширины виджета
Отправлено: alexman от Март 03, 2011, 23:28
Справа спейсер добавь.


Название: Re: Фиксированный размер ширины виджета
Отправлено: Troglodit от Март 03, 2011, 23:42
setAlignment(Qt::AlignLeft) по идее должно помочь


Название: Re: Фиксированный размер ширины виджета
Отправлено: DenTNT от Март 03, 2011, 23:57
Справа спейсер добавь.
thx, но теперь QLabel уехал, а хотелось бы, чтобы он занимал все оставшееся место окна.
(http://pics.qip.ru/201o3Oe.jpg)

Вообще задумка такая, что в QList есть список компов, а в QLabel будет выводится информация по выбранному элементу списка...
Или есть более правильное решение? ::)


Название: Re: Фиксированный размер ширины виджета
Отправлено: alexman от Март 04, 2011, 00:39
Выводи в QTextBrowser. Имхо так удобнее будет.


Название: Re: Фиксированный размер ширины виджета
Отправлено: Alex Custov от Март 04, 2011, 01:15
не надо там спейсеров, если list имеет фиксированную ширину, то label будет занимать всё оставшееся пространство. Покажи разметку в самом дезайнере, а не в предпросмотре. И ещё лучше прикрепи сюда .ui. А ещё лучше почитай документацию. Как ты собираешься писать программу, если элементы на форме не можешь разместить?


Название: Re: Фиксированный размер ширины виджета
Отправлено: DenTNT от Март 04, 2011, 11:04
не надо там спейсеров, если list имеет фиксированную ширину, то label будет занимать всё оставшееся пространство. Покажи разметку в самом дезайнере, а не в предпросмотре. И ещё лучше прикрепи сюда .ui.
Если спэйсер убираю, получается вот что:
(http://pics.qip.ru/1045Gjj.jpg)
UI во вложении...


А ещё лучше почитай документацию. Как ты собираешься писать программу, если элементы на форме не можешь разместить?
лет 10 назад я писал на Watcom C++, чуть позже консольные приложения на Visual C++, с "дизайном" не сталкивался вообще, поэтому и прошу помощи ;)


Выводи в QTextBrowser. Имхо так удобнее будет.
Спасибо, попробую!

P.S. Да, с ним все масштабируется как нужно!!! Спасибо большое!


Название: Re: Фиксированный размер ширины виджета
Отправлено: Пантер от Март 04, 2011, 11:10
Сильно в тему не вчитывался, но если я правильно понял, то вот так:


Название: Re: Фиксированный размер ширины виджета
Отправлено: DenTNT от Март 04, 2011, 11:23
Сильно в тему не вчитывался, но если я правильно понял, то вот так:
Спасибо, тоже работает как надо. А что Вы поменяли?  ???
Разобрался, понял. Спасибо!


Название: Re: Фиксированный размер ширины виджета
Отправлено: Пантер от Март 04, 2011, 11:29
Сравни. ;)