Если ваше главное окно наследует от QMainWindow
, то вы можете просто сделать:
delete mainWnd->centralWidget();
... и все.
Но если вы унаследуете главное окно от QWidget
и дочерние элементы находятся в макете, вам просто нужно просмотреть все элементы макета (не только виджеты, но все элементы макета) и удалить их.Взгляните на самый голосующий ответ, за исключением того, что вы, вероятно, не хотите удалять макет: Qt - удалить все виджеты из макета?
Короче:
if ( mainWnd->layout() != nullptr )
{
QLayoutItem* item;
while ( ( item = mainWnd->layout()->takeAt( 0 ) ) != nullptr )
{
delete item->widget();
delete item;
}
}
Но в любом случае, если у вас есть определенные виджеты, которые вы хотите динамически и многократно добавлять и удалять, всегда лучше поместить их в известный контейнер (обычный QWidget
с некоторым макетом без полей), а затем просто удалитьконтейнер и создайте новый контейнер для добавления новых дочерних элементов.