есть окно. На нем QVerticalLayout. На нем 4 QGroupBox.
При определенных условиях делаю невидимым один из QGroupBox.
В результате - оставшиеся 3 занимают все свободное пространство.
А мне нужно чтоб окно сжалось до минимального размера. Выставил для окна SizePolicy->VSizeType = Maximum - нифига не помогло.
Единственное что помогло это выставление maximum и для окна, и для layout и для QGroupBox.
То есть всем компонентам нужно выставлять.
Я думал что окно само может поджаться. Может еще какое свойство есть ?
Попробуй у лайота сделать
setSizeConstraint(QLayout::SetFixedSize);
Мои мысли по данному поводу:
1. Фиксировать размер ГрупБоксов (в данный период, когда условия сошлись, самым первым пунктом), сделав его минимум, к примеру
2. Убираем нужный бокс
3. Сжимаем виджет лапками до нужного размера, который будет как раз теперь минимумом
4. Делаем размеры груп боксов не фиксированными
Само окно поджиматься не будет, имхо. Слишком много ограничений, а практического применения в массовом использовании оно не имеет.
w.resize( w.size().width(), w.minumimSize().height() );
Тоже долго возился с этим вопросом, единственное рабочее решение, которое нашел - это устанавливать размеры окна жестко
setMinimumSize(size)
setMaximumSize(size)
Вроде можно так обьект_окна->adjustSize();
А я такую задачу решал "в лоб" (не в Qt) - во время перерисовки окна измерЯл, сколько в нужном месте лишнего размера осталось и чуточку корректировал в нужную сторону. Естественно перерисовка тут же вызывалась снова - но процесс сходящийся. В итоге размер подгонялся плавно и как надо )
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)