Qt - cambiamento di layout QWidget
Domanda
Consideriamo abbiamo una QWidget
e un QLayout
nome general_layout
che contiene altri widget e layout. general_layout
è impostato come il layout QWidget
in questo modo:
setLayout(general_layout)
Ora dovrei cambiare il contenuto di QWidget
. Come lo posso fare? Ho cercato di eliminare e creare un nuovo layout per la QWidget
e il nuovo set di layout come layout del QWidget
, ma non sono riuscito a completare con successo le mie intenzioni.
Questo è il mio codice:
delete general_layout;
general_layout = new QHBoxLayout;
general_layout->addLayout(some_layout);
myQWidget->setLayout(general_layout);
Soluzione
Il problema è che i widget di un layout non vengono distrutti durante l'eliminazione di un layout. Questo si traduce in tutti i widget figli di myQWidget essendo ancora presente, sia esso senza un layout.
La soluzione è semplice: aggiungere un
qDeleteAll(myQWidget->children());
Dopo
delete general_layout;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow