我在看示例here,並想知道是否沒有內存泄漏。我有紅色的文章談論subjet mem leak on delete。然而,雖然QWidgets確實保留了添加到該窗口小部件的所有權,但佈局卻沒有。QBoxLayout的所有者是否成爲所有佈局小部件的所有者?
它從QT碼與佈局的父,得到所有的部件此佈局的所有權看起來。但是我在文檔中沒有看到任何這方面的參考。
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'說:*「**注意:**項目的所有權被轉移到佈局,並且佈局的責任是將其刪除。「* http://doc.qt.nokia.com/4.7-snapshot/qlayout。html#addItem – HostileFork 2012-04-17 17:16:53
@HostileFork將* item *的所有權轉移到佈局。不是小部件本身的所有權。看看我的[答](http://stackoverflow.com/a/38003370/1951907),試圖澄清這一點。 – Boris 2016-06-23 23:19:25