我有一个QStackedLayout
,上面包含很少的QWidget
。小部件布局QVBoxLayout
也很少QPushButton
。我想做的是删除QStackedLayout
中的所有小部件,然后删除小部件和布局,但我希望不要删除所有按钮,因为我稍后会将它们放在另一个小部件上。
这是我的代码:
while (QLayoutItem *item = m_stacked_layout->takeAt(0)) {
QWidget *w = item->widget();
for (int i = 0; i < w->layout()->count(); i++) {
QPushButton *button = qobject_cast<QPushButton *>(w->layout()->itemAt(i)->widget());
if (button) {
w->layout()->removeWidget(button);
}
}
delete w;
delete item;
}
应用程序在行delete w;
崩溃。而且,如果我删除delete
行,应用程序可以正常工作。
但是我希望不要删除所有按钮,因为我会将它们放在 稍后再使用另一个小部件。
- 隐藏要传输的所有小部件
- 将所有这些小部件的父小部件设置为
nullptr
- 后。。。设置必要的父项和显示小部件
注意:如果要删除某些插槽中的小部件,则应使用deleteLater
方法。