How to delete all widgets from QStackedWidget
? I need simply remove all widgets from QStackedWidget
.
Asked
Active
Viewed 5,661 times
4
2 Answers
6
You need to iterate through all widgets and remove each of them:
for(int i = stackedWidget->count(); i >= 0; i--)
{
QWidget* widget = stackedWidget->widget(i);
stackedWidget->removeWidget(widget);
widget->deleteLater();
}

demonplus
- 5,613
- 12
- 49
- 68
-
2I'm not sure this will work... better do a while(stackedWidget->count() > 0){ QWidget* widget = stackedWidget->widget(0); /*....*/ } – Mr. Developerdude Nov 04 '17 at 01:07
1
I tried this example in Python As a result of 5 pages, only 3 were deleted.
I did some checks and as result come up with an understanding, in a loop page with index 0 needs to be deleted all the time, because then you delete page 0, page 1 becomes 0
pages = self.ui.stackedWidget_2.count() for i in range(pages): widget = self.ui.stackedWidget_2.widget(0); self.ui.stackedWidget_2.removeWidget(widget);

Sergey Reznichenko
- 11
- 1