LayoutBuilder: Fix Splitter construction

QSplitter is different insofar as that it doesn't have a Layout,
but a list of child widgets.

Change-Id: I4e1076e39d20df409c4bab93d79770b6d0e5aa8d
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
hjk
2023-05-09 14:44:17 +02:00
parent 266202b6b4
commit e7397ec576

View File

@@ -574,8 +574,22 @@ TextEdit::TextEdit(std::initializer_list<LayoutItem> items)
Splitter::Splitter(std::initializer_list<LayoutItem> items) Splitter::Splitter(std::initializer_list<LayoutItem> items)
{ {
this->subItems = items; subItems = items;
setupWidget<QSplitter>(this); // FIXME: Default was Qt::Vertical) onAdd = [](LayoutBuilder &builder) {
auto splitter = new QSplitter;
splitter->setOrientation(Qt::Vertical);
builder.stack.append(splitter);
};
onExit = [](LayoutBuilder &builder) {
const Slice slice = builder.stack.last();
QSplitter *splitter = qobject_cast<QSplitter *>(slice.widget);
for (const ResultItem &ri : slice.pendingItems) {
if (ri.widget)
splitter->addWidget(ri.widget);
}
builder.stack.pop_back();
builder.stack.last().pendingItems.append(ResultItem(splitter));
};
} }
TabWidget::TabWidget(std::initializer_list<LayoutItem> items) TabWidget::TabWidget(std::initializer_list<LayoutItem> items)