Как удалить все элементы из основного макета? - PullRequest
0 голосов
/ 31 марта 2019

У меня есть MainWindow с QWidget * mainWidget.Этот виджет имеет настройку макета - QLayout * mainLayout.Когда я нажму кнопку «Далее», я хочу очистить mainLayout от всех элементов (мне нужно снова использовать mainLayout, но с разными элементами), а также когда я снова нажму кнопку «Назад», мне понадобится очистить макет и использовать его с другими элементами.

Я попытался использовать цикл while с mainWidget-> layout () -> TakeAt (0), но он не работает (я думаю, что у меня проблема с циклом while, потому что в mainLayout есть несколько столбцов и строк),Я начинающий, и у меня есть проблемы с пониманием распределения памяти и т. Д.

1 Ответ

0 голосов
/ 31 марта 2019

Удалить все виджеты: они автоматически удаляются из макета. Вы также можете установить другой макет на главном виджете, а затем добавить новые виджеты к нему. При переходе на предыдущую страницу установите на ней предыдущий макет. Однако вам придется управлять видимостью виджетов: они все равно будут видны.

Но ничего из этого не требуется: каждая страница должна иметь свой собственный виджет, который вы родительский для основного виджета, когда вы хотите, чтобы он отображался, и не родительский, когда он должен быть скрыт. В этом случае основной макет может быть простым, например QVBoxLayout, поскольку он содержит только один виджет - текущую страницу.

А потом: вы уверены, что нет ни одного виджета или макета, который бы поддерживал страницы виджетов? Посмотрите в документации, вы можете быть приятно удивлены:)

...