diff --git a/src/libs/utils/layoutbuilder.cpp b/src/libs/utils/layoutbuilder.cpp index 515c4b70683..8db09b48cd5 100644 --- a/src/libs/utils/layoutbuilder.cpp +++ b/src/libs/utils/layoutbuilder.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include namespace Utils { @@ -452,6 +453,13 @@ LayoutBuilder::Span::Span(int span_, const LayoutItem &item) span = span_; } +LayoutBuilder::Tab::Tab(const QString &tabName, const LayoutBuilder &item) +{ + text = tabName; + widget = new QWidget; + item.attachTo(widget); +} + LayoutBuilder::HorizontalRule::HorizontalRule() { specialType = SpecialType::HorizontalRule; @@ -476,18 +484,28 @@ static void applyItems(QWidget *widget, const QList & } } -Group::Group(std::initializer_list items) +Group::Group(std::initializer_list items) { widget = new QGroupBox; applyItems(widget, items); } -PushButton::PushButton(std::initializer_list items) +PushButton::PushButton(std::initializer_list items) { widget = new QPushButton; applyItems(widget, items); } +TabWidget::TabWidget(std::initializer_list tabs) + : TabWidget(new QTabWidget, tabs) {} + +TabWidget::TabWidget(QTabWidget *tabWidget, std::initializer_list tabs) +{ + widget = tabWidget; + for (const Tab &tab : tabs) + tabWidget->addTab(tab.widget, tab.text); +} + // "Properties" LayoutBuilder::Setter title(const QString &title, BoolAspect *checker) diff --git a/src/libs/utils/layoutbuilder.h b/src/libs/utils/layoutbuilder.h index 23134446676..1cf83e05c63 100644 --- a/src/libs/utils/layoutbuilder.h +++ b/src/libs/utils/layoutbuilder.h @@ -14,6 +14,7 @@ QT_BEGIN_NAMESPACE class QLayout; +class QTabWidget; class QWidget; QT_END_NAMESPACE @@ -125,6 +126,12 @@ public: explicit Stretch(int stretch = 1); }; + class QTCREATOR_UTILS_EXPORT Tab : public LayoutItem + { + public: + Tab(const QString &tabName, const LayoutBuilder &item); + }; + class QTCREATOR_UTILS_EXPORT Break : public LayoutItem { public: @@ -161,6 +168,10 @@ private: namespace Layouting { +using Space = LayoutBuilder::Space; +using Span = LayoutBuilder::Span; +using Tab = LayoutBuilder::Tab; + QTCREATOR_UTILS_EXPORT LayoutBuilder::Setter title(const QString &title, BoolAspect *checker = nullptr); @@ -182,6 +193,13 @@ public: PushButton(std::initializer_list items); }; +class QTCREATOR_UTILS_EXPORT TabWidget : public LayoutBuilder::LayoutItem +{ +public: + TabWidget(std::initializer_list tabs); + TabWidget(QTabWidget *tabWidget, std::initializer_list tabs); +}; + class QTCREATOR_UTILS_EXPORT Column : public LayoutBuilder { public: @@ -224,9 +242,6 @@ public: Splitter(std::initializer_list items) : LayoutBuilder(StackLayout, items) {} }; -using Space = LayoutBuilder::Space; -using Span = LayoutBuilder::Span; - QTCREATOR_UTILS_EXPORT extern LayoutBuilder::Break br; QTCREATOR_UTILS_EXPORT extern LayoutBuilder::Stretch st; QTCREATOR_UTILS_EXPORT extern LayoutBuilder::Space empty;