Как заставить виджет Qt изменить свой размер? - PullRequest
4 голосов
/ 23 мая 2011

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

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

Ответы [ 3 ]

3 голосов
/ 23 мая 2011

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

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

1 голос
/ 23 мая 2011

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

0 голосов
/ 23 мая 2011

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

QBoxLayout::addWidget( my_widget, 1 );

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

...