Грегори Пакош указал правильное решение, но я хотел повторить пример кода и предложить вам взглянуть на область действия объекта C ++. Грег точен, но не уточнил, что размещение сплиттера в стеке означает, что как только он выходит из области видимости (приложение выходит), он будет удален.
Точнее, вы должны установить родителя QObject. Когда родительский объект становится владельцем другого объекта, он удаляет своих детей после вызова delete родительского объекта. В случае QSplitters addWidget добавляет к макету QWidget, и макет становится владельцем этих объектов.
#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;
splitter.addWidget(tree);
splitter.addWidget(list);
splitter.addWidget(table);
splitter.show();
return app.exec();
}
Таким образом, простое создание 'splitter' локальной переменной приведет к ее удалению, когда он выходит из области видимости. В свою очередь это дети тоже будут удалены.