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