8

假设我们有一个QWidget和一个包含其他小部件和布局的QLayout命名。设置为这样的布局:general_layoutgeneral_layoutQWidget

setLayout(general_layout)

现在我应该更改QWidget. 我怎样才能做到这一点?我试图为 删除并创建一个新布局,QWidget并将该新布局设置为 的布局QWidget,但无法成功完成我的意图。

这是我的代码:

delete general_layout;
general_layout = new QHBoxLayout;
general_layout->addLayout(some_layout);
myQWidget->setLayout(general_layout);
4

1 回答 1

15

问题是布局的小部件在删除布局时不会被破坏。这导致 myQWidget 的所有子小部件仍然存在,即使没有布局。

解决方法很简单:添加一个

qDeleteAll(myQWidget->children());

delete general_layout;
于 2010-06-07T15:21:05.393 回答