私は例hereを見ていて、メモリリークがないかどうか疑問に思っていました。私は副題mem leak on deleteについて話している記事を赤色にしました。しかし、QWidgetsは、ウィジェットに追加されたウィジェットの所有権を保持していますが、レイアウトはそうではありません。QBoxLayoutのオーナーは、すべてのレイアウトウィジェットのオーナーになりますか?
レイアウトを持つ親がこのレイアウトのすべてのウィジェットの所有権を取得しているようです。しかし、私はドキュメントのこれの任意の参照を見たことができませんでした。 Layout Managementから
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"));
}
基本レイアウトクラス(QLayout)は、 'addWidget'が' addItem'を呼び出し、... 'addItem'が次のように言っています:*" ** Note:** itemの所有権レイアウトに転送され、それを削除するのはレイアウトの責任です」* http://doc.qt.nokia.com/4.7-snapshot/qlayout。html#addItem – HostileFork
@HostileFork * item *の所有権がレイアウトに転送されます。ウィジェット自体の所有権ではありません。この点を明確にしようとする私の[回答](http://stackoverflow.com/a/38003370/1951907)を参照してください。 – Boris