我正在查看这里的示例,想知道它是否存在内存泄漏。我已经阅读了有关主题的文章mem leak on delete。然而,虽然QWidgets确实保留了添加到其中的小部件的所有权,但是布局却没有。
从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"));
}
addWidget
调用addItem
...而addItem
则表明:“ 注意: 项目的所有权已转移到布局,并且布局有责任删除它。”http://doc.qt.nokia.com/4.7-snapshot/qlayout.html#addItem - HostileFork says dont trust SE