我有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
行,应用程序工作正常。
答案 0 :(得分:1)
但我希望不删除所有按钮,因为我会把它们放到 另一个小部件。
nullptr
注意:如果要删除某些插槽中的小部件,则应使用deleteLater
方法。