From e78f0b5911cace8b1f7cc0c2dad6ad8a5029eb9d Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Wed, 11 Jan 2023 14:43:41 +0100 Subject: [PATCH] LayoutBuilder: Turn Splitter into a LayoutItem Change-Id: I05bdadf7f79966e215b4999db9c2f96cd8f67f9f Reviewed-by: hjk --- src/libs/utils/layoutbuilder.cpp | 11 +++++++++++ src/libs/utils/layoutbuilder.h | 15 ++++++++------- .../tst_manual_widgets_layoutbuilder.cpp | 12 +++++++++++- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/libs/utils/layoutbuilder.cpp b/src/libs/utils/layoutbuilder.cpp index 28646cf1483..4854b69f6cf 100644 --- a/src/libs/utils/layoutbuilder.cpp +++ b/src/libs/utils/layoutbuilder.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -496,6 +497,16 @@ PushButton::PushButton(std::initializer_list items) applyItems(widget, items); } +Splitter::Splitter(std::initializer_list items) + : Splitter(new QSplitter(Qt::Vertical), items) {} + +Splitter::Splitter(QSplitter *splitter, std::initializer_list items) +{ + widget = splitter; + for (const LayoutItem &item : items) + splitter->addWidget(item.widget); +} + TabWidget::TabWidget(std::initializer_list tabs) : TabWidget(new QTabWidget, tabs) {} diff --git a/src/libs/utils/layoutbuilder.h b/src/libs/utils/layoutbuilder.h index 98464d85484..74b9c7bfa1c 100644 --- a/src/libs/utils/layoutbuilder.h +++ b/src/libs/utils/layoutbuilder.h @@ -14,6 +14,7 @@ QT_BEGIN_NAMESPACE class QLayout; +class QSplitter; class QTabWidget; class QWidget; QT_END_NAMESPACE @@ -193,6 +194,13 @@ public: PushButton(std::initializer_list items); }; +class QTCREATOR_UTILS_EXPORT Splitter : public LayoutBuilder::LayoutItem +{ +public: + Splitter(std::initializer_list items); + Splitter(QSplitter *splitter, std::initializer_list items); +}; + class QTCREATOR_UTILS_EXPORT TabWidget : public LayoutBuilder::LayoutItem { public: @@ -235,13 +243,6 @@ public: Stack(std::initializer_list items) : LayoutBuilder(StackLayout, items) {} }; -class QTCREATOR_UTILS_EXPORT Splitter : public LayoutBuilder -{ -public: - Splitter() : LayoutBuilder(StackLayout) {} - Splitter(std::initializer_list items) : LayoutBuilder(StackLayout, items) {} -}; - QTCREATOR_UTILS_EXPORT extern LayoutBuilder::Break br; QTCREATOR_UTILS_EXPORT extern LayoutBuilder::Stretch st; QTCREATOR_UTILS_EXPORT extern LayoutBuilder::Space empty; diff --git a/tests/manual/widgets/layoutbuilder/tst_manual_widgets_layoutbuilder.cpp b/tests/manual/widgets/layoutbuilder/tst_manual_widgets_layoutbuilder.cpp index 3171df83f4a..4f6bf710b2f 100644 --- a/tests/manual/widgets/layoutbuilder/tst_manual_widgets_layoutbuilder.cpp +++ b/tests/manual/widgets/layoutbuilder/tst_manual_widgets_layoutbuilder.cpp @@ -5,6 +5,7 @@ #include #include +#include using namespace Utils::Layouting; @@ -25,7 +26,16 @@ int main(int argc, char *argv[]) Row { PushButton { text("-"), onClicked(minusClick) }, lineEdit, - PushButton { text("+"), onClicked(plusClick) } + PushButton { text("+"), onClicked(plusClick) }, + Group { + title("Splitter in Group"), + Column { + Splitter { + new QTextEdit("First Widget"), + new QTextEdit("Second Widget"), + }, + } + }, }.emerge()->show(); return app.exec();