Qt - изменить макет QWidget
Давайте рассмотрим, у нас есть QWidget
и 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);
1 ответ
Решение
Проблема в том, что виджеты макета не уничтожаются при удалении макета. В результате все дочерние виджеты myQWidget все еще присутствуют, будь то без макета.
Решение простое: добавить
qDeleteAll(myQWidget->children());
после
delete general_layout;