qt - QT5.4 remove and delete widget in a layout -


i have qstackedlayout contains few qwidget on it. widgets layout qvboxlayout have few qpushbutton. wanted remove widgets inside qstackedlayout , delete widgets , layouts but want buttons not deleted 'cause put them widget later.

here's code:

while (qlayoutitem *item = m_stacked_layout->takeat(0)) {     qwidget *w = item->widget();      (int = 0; < w->layout()->count(); i++) {         qpushbutton *button = qobject_cast<qpushbutton *>(w->layout()->itemat(i)->widget());         if (button) {             w->layout()->removewidget(button);         }     }      delete w;     delete item; } 

the application crashes @ line delete w;. and, if remove delete lines, application works fine.

but want buttons not deleted 'cause put them widget later.

  1. hide widgets want transfer
  2. set parent widget widgets nullptr
  3. later... set necessary parent , show widgets

note: if want delete widgets inside slots, should use deletelater method.