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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Фиксированный размер ширины виджета  (Прочитано 12363 раз)
DenTNT
Гость
« : Март 02, 2011, 21:11 »

Я только недавно столкнулся с Qt, поэтому вопрос может быть нубский...
В главном окне есть 2 виджета, один из которых QListWidget, второй служит для вывода информации, пусть будет QLabel.
Хотелось бы, чтобы при масштабировании окна ширина QListWidget оставалась постоянной, менялась только высота. Размеры же второго виджета масштабировались согласно оставшемуся месту. Например, ширина главного окна минус ширина QListWidget, а по высоте масштабировалась по всему свободному пространству:

Сейчас это выглядит так:

Буду признателен за помощь!
Записан
Fat-Zer
Гость
« Ответ #1 : Март 02, 2011, 21:21 »

1) смотреть примеры/читать про лейауты в асистенте.
2) после п. 1 если не всё будет устраивать, то поэксперементировать со свойством  sizePolicy дочерних виджетов.
Записан
deaks
Гость
« Ответ #2 : Март 02, 2011, 21:51 »

В дизайнере используйте например grid layout и регулируйте максимальные-минимальные размеры виджетов
Записан
DenTNT
Гость
« Ответ #3 : Март 03, 2011, 15:47 »

Ладно, не буду "прилеплять" виджет к правой границе окна, но остается вопрос, как в дизайнере "разрешить" границам виджета масштабироваться?
Ставлю в sizePolicy значение fixed для нужного мне виджета, все работает как хочу, но для второго виджета ставлю Expanding, но при изменении геометрии окна, размеры виджета не меняются...
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #4 : Март 03, 2011, 16:42 »

В дизайнере используйте например grid layout и регулируйте максимальные-минимальные размеры виджетов
Записан
DenTNT
Гость
« Ответ #5 : Март 03, 2011, 18:16 »

1. Qt Designer -> Файл -> Новый -> Main Window -> Создать
2. Добавляю List Widget
3. Делаю minimumSize и maximumSize ширину по 100

Вопрос: Что нужно сделать, чтобы высота этого виджета автоматически изменялась в зависимости от высоты главного окна?
P.S. С Layout'ами поигрался, но желаемого эффекта не добился  В замешательстве
Записан
shirushizo
Гость
« Ответ #6 : Март 03, 2011, 19:57 »

Создаешь QHBoxLauoyt на него кидай оба виджета. minimumWidth/maximumWidth устанавливай в 100, или программно в конструкторе setFixetWidth. Если надо QMainWindow, то QHBoxLauoyt помещаешь на виджет и устанавливаешь виджет центральным.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #7 : Март 03, 2011, 21:26 »

P.S. С Layout'ами поигрался, но желаемого эффекта не добился  В замешательстве

Как конкретно? Тебе нужно просто щёлкнуть по пустому пространству главной формы и выбрать на тулбаре в Designer "Сгруппировать по сетке" (Layout in grid). Неужели это всё так сложно?
Записан
DenTNT
Гость
« Ответ #8 : Март 03, 2011, 23:09 »

Создаешь QHBoxLauoyt на него кидай оба виджета. minimumWidth/maximumWidth устанавливай в 100, или программно в конструкторе setFixetWidth. Если надо QMainWindow, то QHBoxLauoyt помещаешь на виджет и устанавливаешь виджет центральным.
Как конкретно? Тебе нужно просто щёлкнуть по пустому пространству главной формы и выбрать на тулбаре в Designer "Сгруппировать по сетке" (Layout in grid). Неужели это всё так сложно?
Хотелось бы, чтобы QList был прижат к левой границе главного окна, но получилось вот как:
« Последнее редактирование: Март 03, 2011, 23:11 от DenTNT » Записан
alexman
Гость
« Ответ #9 : Март 03, 2011, 23:28 »

Справа спейсер добавь.
Записан
Troglodit
Гость
« Ответ #10 : Март 03, 2011, 23:42 »

setAlignment(Qt::AlignLeft) по идее должно помочь
Записан
DenTNT
Гость
« Ответ #11 : Март 03, 2011, 23:57 »

Справа спейсер добавь.
thx, но теперь QLabel уехал, а хотелось бы, чтобы он занимал все оставшееся место окна.


Вообще задумка такая, что в QList есть список компов, а в QLabel будет выводится информация по выбранному элементу списка...
Или есть более правильное решение? Строит глазки
Записан
alexman
Гость
« Ответ #12 : Март 04, 2011, 00:39 »

Выводи в QTextBrowser. Имхо так удобнее будет.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #13 : Март 04, 2011, 01:15 »

не надо там спейсеров, если list имеет фиксированную ширину, то label будет занимать всё оставшееся пространство. Покажи разметку в самом дезайнере, а не в предпросмотре. И ещё лучше прикрепи сюда .ui. А ещё лучше почитай документацию. Как ты собираешься писать программу, если элементы на форме не можешь разместить?
Записан
DenTNT
Гость
« Ответ #14 : Март 04, 2011, 11:04 »

не надо там спейсеров, если list имеет фиксированную ширину, то label будет занимать всё оставшееся пространство. Покажи разметку в самом дезайнере, а не в предпросмотре. И ещё лучше прикрепи сюда .ui.
Если спэйсер убираю, получается вот что:

UI во вложении...


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


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

P.S. Да, с ним все масштабируется как нужно!!! Спасибо большое!
« Последнее редактирование: Март 04, 2011, 11:07 от DenTNT » Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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