Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ Сжать окно

Автор: zss 7.8.2009, 20:31

есть окно. На нем QVerticalLayout. На нем 4 QGroupBox.

При определенных условиях делаю невидимым один из QGroupBox.
В результате - оставшиеся 3 занимают все свободное пространство.

А мне нужно чтоб окно сжалось до минимального размера. Выставил для окна SizePolicy->VSizeType = Maximum - нифига не помогло.

Единственное что помогло это выставление maximum и для окна, и для layout и для QGroupBox.
То есть всем компонентам нужно выставлять.

Я думал что окно само может поджаться. Может еще какое свойство есть ?

Автор: panter_dsd 8.8.2009, 9:31

Попробуй у лайота сделать
setSizeConstraint(QLayout::SetFixedSize);

Автор: zss 8.8.2009, 13:18

Цитата(panter_dsd @ 8.8.2009, 10:31) *
Попробуй у лайота сделать
setSizeConstraint(QLayout::SetFixedSize);

нифига - тот же эффект.

Автор: ufna 8.8.2009, 16:20

Мои мысли по данному поводу:
1. Фиксировать размер ГрупБоксов (в данный период, когда условия сошлись, самым первым пунктом), сделав его минимум, к примеру
2. Убираем нужный бокс
3. Сжимаем виджет лапками до нужного размера, который будет как раз теперь минимумом
4. Делаем размеры груп боксов не фиксированными


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

Автор: zss 8.8.2009, 16:38

Цитата(ufna @ 8.8.2009, 17:20) *
Фиксировать размер ГрупБоксов (в данный период, когда условия сошлись, самым первым пунктом), сделав его минимум, к примеру

нужно лишь сжимать до минимума

Цитата(ufna @ 8.8.2009, 17:20) *
3. Сжимаем виджет лапками до нужного размера, который будет как раз теперь минимумом

в этом и вопрос - как ?

Цитата(ufna @ 8.8.2009, 17:20) *
4. Делаем размеры груп боксов не фиксированными

тоесть сначала фиксируем, сжимаем, потом разжимаем ?

Цитата(ufna @ 8.8.2009, 17:20) *
Само окно поджиматься не будет, имхо. Слишком много ограничений, а практического применения в массовом использовании оно не имеет.


а чем оно отличается от обычного widget-а ,

Автор: BRE 8.8.2009, 16:41

Цитата(zss @ 8.8.2009, 17:38) *
Цитата(ufna @ 8.8.2009, 17:20) *
3. Сжимаем виджет лапками до нужного размера, который будет как раз теперь минимумом

в этом и вопрос - как ?

Попробуй w.resize( w.minimumSize() );

Автор: zss 9.8.2009, 19:58

Цитата(BRE @ 8.8.2009, 17:41) *
Попробуй w.resize( w.minimumSize() );

вроде работает, только при этом и по горизонтали ужалось, а хотелось только по вертикали

Автор: BRE 9.8.2009, 20:05

Цитата(zss @ 9.8.2009, 20:58) *
Цитата(BRE @ 8.8.2009, 17:41) *
Попробуй w.resize( w.minimumSize() );

вроде работает, только при этом и по горизонтали ужалось, а хотелось только по вертикали

Тогда так:
w.resize( w.size().width(), w.minumimSize().height() );

Автор: zss 9.8.2009, 20:08

Цитата(BRE @ 9.8.2009, 21:05) *
w.resize( w.size().width(), w.minumimSize().height() );


я сначала поставил HSizePolycy = Fixed. Навига вообще нужна политика если она не работает

Автор: quarz 30.9.2010, 18:41

Тоже долго возился с этим вопросом, единственное рабочее решение, которое нашел - это устанавливать размеры окна жестко

setMinimumSize(size)
setMaximumSize(size)

Конечно, это годится только для не-sizeable окон.

Автор: Гость 30.9.2010, 19:44

Вроде можно так обьект_окна->adjustSize();

Автор: Алексей1153 1.10.2010, 6:32

А я такую задачу решал "в лоб" (не в Qt) - во время перерисовки окна измерЯл, сколько в нужном месте лишнего размера осталось и чуточку корректировал в нужную сторону. Естественно перерисовка тут же вызывалась снова - но процесс сходящийся. В итоге размер подгонялся плавно и как надо )

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)