Давайте полагать, что у нас есть a QWidget
и a QLayout
именованный general_layout
это содержит другие виджеты и разметки. general_layout
установлен как QWidget
расположение как это:
setLayout(general_layout)
Теперь я должен для изменения содержания QWidget
. Как я могу сделать это? Я попытался удалить и создать новое расположение для QWidget
и что новый набор расположения как расположение QWidget
, но не мог завершить мои намерения успешно.
Это - мой код:
delete general_layout;
general_layout = new QHBoxLayout;
general_layout->addLayout(some_layout);
myQWidget->setLayout(general_layout);
Проблема в том, что виджеты макета не уничтожаются при удалении макета. В результате все дочерние виджеты myQWidget все еще присутствуют, даже без макета.
Решение простое: добавьте
qDeleteAll(myQWidget->children());
после
delete general_layout;