我必须删除它吗?[Qt的]

The*_* do 6 qt

我是否必须在下面的示例中从堆中删除对象?如果是,怎么样?

#include <QApplication>
#include <QTreeView>
#include <QListView>
#include <QTableView>
#include <QSplitter>

int main(int argc, char* argv[])
{
    QApplication app(argc,argv);
    QTreeView* tree = new QTreeView;
    QListView* list = new QListView;
    QTableView* table = new QTableView;
    QSplitter* splitter = new QSplitter;
    splitter->addWidget(tree);
    splitter->addWidget(list);
    splitter->addWidget(table);
    splitter->show();
//    delete splitter; WHEN TRYING TO DELETE I'M GETTING INFO THAT app  EXITED
//    delete table;    WITH CODE -1073741819
//    delete list;
//    delete tree;
    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

感谢您的任何帮助.

Gre*_*osz 12

只需splitter在堆栈上分配.然后tree,listtable成为孩子们的splitter其中取得所有权.当splitter被删除,所有的孩子都将被删除.

来自Widgets教程 - 子窗口小部件:

该按钮现在是窗口的子项,在窗口被销毁时将被删除.请注意,隐藏或关闭窗口不会自动销毁它.当示例退出时,它将被销毁.

另请参见对象树和对象所有权.