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);
È stato utile?

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
scroll top