Qt - изменить макет QWidget - PullRequest
7 голосов
/ 07 июня 2010

Давайте рассмотрим, что у нас есть 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 Ответ

14 голосов
/ 07 июня 2010

Проблема в том, что виджеты макета не уничтожаются при удалении макета. Это приводит к тому, что все дочерние виджеты myQWidget все еще присутствуют, будь то без макета.

Решение простое: добавить

qDeleteAll(myQWidget->children());

после

delete general_layout;
...