Ho un QVBoxLayout all'interno di un scrollArea. Aggiungo dinamicamente QFormLayout s.Elimina tutti i bambini da QVBoxLayout
widgetTreeStruct* tree = new widgetTreeStruct(QString::number(numberOfGraphs));
QFormLayout* layout = tree->getTree(); // get QFormLayout
ui->verticalLayout_2->addLayout(layout); //add to the vertical layout
A un certo punto ho bisogno di rimuovere tutti i aggiunto QFormLayouts dal QVBoxLayout.
Ho provato diversi modi per farlo.
- Utilizzando qDeleteAll()
qDeleteAll(ui->verticalLayout_2->children());
voce 2.delete uno per uno
QLayoutItem* child;
while((child = ui->verticalLayout_2->takeAt(0)) != 0)
{
if(child->widget() != 0)
{
delete child->widget();
}
delete child;
}
Ma non è successo niente. L'unica cosa è che quando provo ad aggiungere elementi a QVBoxLayout, vengono aggiunti nuovi elementi in cima agli elementi aggiunti in precedenza.
Sento che devo ridisegnare, ridisegnare, aggiornare, aggiornare o qualcosa del genere. Ho provato ui->verticalLayout_2->update();
ma non ha funzionato per me.
Quindi, cosa dovrei fare?
Questo è, in effetti, * il * modo corretto di farlo. +1 –