Qt - 改变QWidget布局

Nar*_*rek 7 layout qt qt4 qwidget

让我们考虑一下我们有一个包含其他小部件和布局QWidgetQLayout命名general_layout.general_layout被设置为这样的QWidget布局:

setLayout(general_layout)
Run Code Online (Sandbox Code Playgroud)

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

这是我的代码:

delete general_layout;
general_layout = new QHBoxLayout;
general_layout->addLayout(some_layout);
myQWidget->setLayout(general_layout);
Run Code Online (Sandbox Code Playgroud)

Job*_*Job 14

问题是删除布局时不会破坏布局的小部件.这导致myQWidget的所有子窗口小部件仍然存在,无需布局.

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

qDeleteAll(myQWidget->children());
Run Code Online (Sandbox Code Playgroud)

delete general_layout;
Run Code Online (Sandbox Code Playgroud)

  • 可能是你不再需要第一个结构了.如果这样做,使用QStackedLayout(http://doc.trolltech.com/latest/qstackedlayout.html)会容易得多.如果您正在尝试实现类似向导的操作,请查看QWizard(http://doc.trolltech.com/latest/qwizard.html). (4认同)