From abf2234e4fcd99a8955c2ebfeee8c98460d942ff Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Tue, 11 Jul 2023 13:23:00 +0200 Subject: [PATCH] Utils: Add ToolBar to layoutbuilder Change-Id: I26ce85f73e625508d816c0e361a6afc65adf65ff Reviewed-by: hjk --- src/libs/utils/layoutbuilder.cpp | 25 +++++++++++++++++++++++-- src/libs/utils/layoutbuilder.h | 6 ++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/libs/utils/layoutbuilder.cpp b/src/libs/utils/layoutbuilder.cpp index fa2c6e369eb..a45469882e8 100644 --- a/src/libs/utils/layoutbuilder.cpp +++ b/src/libs/utils/layoutbuilder.cpp @@ -3,20 +3,21 @@ #include "layoutbuilder.h" +#include #include #include #include #include #include #include -#include #include #include #include +#include #include #include #include -#include +#include namespace Layouting { @@ -774,6 +775,26 @@ Splitter::Splitter(std::initializer_list items) }; } +ToolBar::ToolBar(std::initializer_list items) +{ + subItems = items; + onAdd = [](LayoutBuilder &builder) { + auto toolbar = new QToolBar; + toolbar->setOrientation(Qt::Horizontal); + builder.stack.append(toolbar); + }; + onExit = [](LayoutBuilder &builder) { + const Slice slice = builder.stack.last(); + QToolBar *toolBar = qobject_cast(slice.widget); + for (const ResultItem &ri : slice.pendingItems) { + if (ri.widget) + toolBar->addWidget(ri.widget); + } + builder.stack.pop_back(); + builder.stack.last().pendingItems.append(ResultItem(toolBar)); + }; +} + TabWidget::TabWidget(std::initializer_list items) { this->subItems = items; diff --git a/src/libs/utils/layoutbuilder.h b/src/libs/utils/layoutbuilder.h index 72fefc1b781..e94fbb56c04 100644 --- a/src/libs/utils/layoutbuilder.h +++ b/src/libs/utils/layoutbuilder.h @@ -171,6 +171,12 @@ public: Splitter(std::initializer_list items); }; +class QTCREATOR_UTILS_EXPORT ToolBar : public LayoutItem +{ +public: + ToolBar(std::initializer_list items); +}; + class QTCREATOR_UTILS_EXPORT TabWidget : public LayoutItem { public: