So che questa domanda è vecchio e ha risposto, ma: Dal QtAlgorithms offre qDelteAll, è possibile eliminare un layout, compresa la cancellazione di tutti i suoi figli con uno -liner.
Questa è una repuplication del testo che ho postato qui: https://stackoverflow.com/a/35751235/3292513
Questo codice cancella la disposizione, tutti i suoi figli e tutto dentro il layout 'scompare'.
qDeleteAll(yourWidget->children());
Ecco la descrizione della funzione overload:
vuoto qDeleteAll (ForwardIterator inizio, fine ForwardIterator)
Elimina tutti gli elementi nell'intervallo [inizio, fine] utilizzando il C++ cancella> operatore. Il tipo di elemento deve essere un tipo di puntatore (ad esempio, QWidget *).
Si noti che qDeleteAll deve essere alimentato con un contenitore da quel widget (non quel layout). E nota che qDeleteAll NON elimina yourWidget
- solo i suoi figli.
Ora un nuovo layout può essere regolato.
fonte
2016-03-02 15:19:50
Credo che questo non sia corretto perché eliminerà i bambini e i sottofinestri se si passa il genitore nel proprio costruttore. – Goombert