2011-05-23 3 views
4

Моя проблема, вероятно, очень проста, но я понятия не имею, как ее решить.Как сделать виджет Qt своим размером?

Итак, у меня есть несколько виджетов в вертикальной компоновке. Некоторые из них в какой-то момент должны быть невидимыми. Я полагаю, что в этот момент контроль над расширяющейся вертикальной политикой должен увеличить ее высоту, но этого никогда не произойдет. Зачем? Как заставить его изменить размер? Пока есть только один способ сделать это - немного изменить размер окна вручную, и только после этого виджет изменит свою высоту.

ответ

3

Когда вы делаете виджет невидимым (т. Е. Звоните hide), также удалите его из макета (см. removeWidget). Таким образом, все остальные виджеты будут автоматически изменять размер, чтобы использовать дополнительное пространство. Поскольку вы скрываете только виджет, его пространство по-прежнему сохраняется в вертикальной компоновке.

Использовать insertWidget для поддержания порядка расположения макета при переходе скрытого виджета обратно в режим просмотра. В противном случае addWidget всегда будет располагать его внизу. Этот подход должен быть менее сложным, чем управление размерами вручную.

+0

Я пробовал этот путь, но он все еще не работает. Виджет исчезает, но другой виджет не растягивается. :(Спасибо в любом случае. – mimic

1

Попробуйте позвонить adjustSize() на родительский элемент макета.

+0

Пробовал, не работает. Спасибо в любом случае – mimic

0

Вы пытались установить растяжку на 1 для виджета, который хотите расширить, когда другие скрыты?

QBoxLayout::addWidget(my_widget, 1); 

Когда этот виджет добавляются с участком 1 и другими виджетами без протяжения, этот виджет будет расширяться до доступного пространства. Может быть, это сделает трюк.

+0

Извините, но я не добавляю такой виджет. У виджета, который находится в макете, всегда есть расширяющаяся политика, но она не расширяется, когда я удаляю другую (с предпочтительная политика). – mimic

Смежные вопросы