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;
Другие вопросы по тегам