void MultiViewWidget::splitView(Qt::Orientation orient, ContainerWidget *container) { QVBoxLayout *widgetLayout = qobject_cast<QVBoxLayout *>(container->parent()); QSplitter *split = qobject_cast<QSplitter *>(container->parent()); if (!widgetLayout) if (container->parent() == this) widgetLayout = qobject_cast<QVBoxLayout *>(layout()); if (widgetLayout) { QSplitter *splitter = new QSplitter(orient, this); widgetLayout->removeWidget(container); widgetLayout->addWidget(splitter); splitter->addWidget(container); container = createContainer(); splitter->addWidget(container); QList<int> sizes; int s = Qt::Horizontal ? splitter->size().width() / 2 : splitter->size().height() / 2; sizes << s << s; splitter->setSizes(sizes); } else if (split) { QSplitter *splitter = new QSplitter(orient, this); int idx = split->indexOf(container); splitter->addWidget(container); container = createContainer(); splitter->addWidget(container); split->insertWidget(idx, splitter); QList<int> sizes; int s = Qt::Horizontal ? splitter->size().width() / 2 : splitter->size().height() / 2; sizes << s << s; splitter->setSizes(sizes); } }