让我们考虑一下我们有一个 QWidgetQLayout 命名 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;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top