Stavo guardando l'esempio here e mi chiedevo se non ci fossero perdite di memoria. Ho redatto l'articolo parlando del subjet mem leak on delete. Tuttavia, mentre i QWidgets mantengono la proprietà del widget aggiunto, il layout no.Il proprietario di QBoxLayout diventa il proprietario di tutti i widget di layout?
Sembra dal codice QT che il genitore con il layout, ottiene la proprietà di tutti i widget per questo layout. Tuttavia non ho potuto vedere alcun riferimento di questo nei documenti.
Window::Window()
{
editor = new QTextEdit();
QPushButton *sendButton = new QPushButton(tr("&Send message"));
connect(sendButton, SIGNAL(clicked()), this, SLOT(sendMessage()));
QHBoxLayout *buttonLayout = new QHBoxLayout();
buttonLayout->addStretch();
buttonLayout->addWidget(sendButton);
buttonLayout->addStretch();
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(editor);
layout->addLayout(buttonLayout);
setWindowTitle(tr("Custom Type Sending"));
}
Sebbene le classi derivate non lo menzionino, la classe di layout di base (QLayout) dice che 'addWidget' chiama' addItem' ... e 'addItem' dice: *" ** Nota: ** La proprietà dell'oggetto viene trasferito al layout ed è responsabilità del layout cancellarlo. "* http://doc.qt.nokia.com/4.7-snapshot/qlayout.html # addItem – HostileFork
@HostileFork la proprietà dell'elemento * * viene trasferita al layout. Non è la proprietà del widget stesso. Vedi la mia [risposta] (http://stackoverflow.com/a/38003370/1951907) che cerca di chiarire questo punto. – Boris