LayoutBuilder: Add support for tab widget

Change-Id: Ia35fa234c8ac1befd7e8fd2be57998e94294a5a1
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Jarek Kobus
2022-11-18 10:44:10 +01:00
parent 1f59f42287
commit d21acbd413
2 changed files with 38 additions and 5 deletions

View File

@@ -12,6 +12,7 @@
#include <QPushButton> #include <QPushButton>
#include <QStackedLayout> #include <QStackedLayout>
#include <QStyle> #include <QStyle>
#include <QTabWidget>
#include <QWidget> #include <QWidget>
namespace Utils { namespace Utils {
@@ -452,6 +453,13 @@ LayoutBuilder::Span::Span(int span_, const LayoutItem &item)
span = span_; span = span_;
} }
LayoutBuilder::Tab::Tab(const QString &tabName, const LayoutBuilder &item)
{
text = tabName;
widget = new QWidget;
item.attachTo(widget);
}
LayoutBuilder::HorizontalRule::HorizontalRule() LayoutBuilder::HorizontalRule::HorizontalRule()
{ {
specialType = SpecialType::HorizontalRule; specialType = SpecialType::HorizontalRule;
@@ -476,18 +484,28 @@ static void applyItems(QWidget *widget, const QList<LayoutBuilder::LayoutItem> &
} }
} }
Group::Group(std::initializer_list<LayoutBuilder::LayoutItem> items) Group::Group(std::initializer_list<LayoutItem> items)
{ {
widget = new QGroupBox; widget = new QGroupBox;
applyItems(widget, items); applyItems(widget, items);
} }
PushButton::PushButton(std::initializer_list<LayoutBuilder::LayoutItem> items) PushButton::PushButton(std::initializer_list<LayoutItem> items)
{ {
widget = new QPushButton; widget = new QPushButton;
applyItems(widget, items); applyItems(widget, items);
} }
TabWidget::TabWidget(std::initializer_list<Tab> tabs)
: TabWidget(new QTabWidget, tabs) {}
TabWidget::TabWidget(QTabWidget *tabWidget, std::initializer_list<Tab> tabs)
{
widget = tabWidget;
for (const Tab &tab : tabs)
tabWidget->addTab(tab.widget, tab.text);
}
// "Properties" // "Properties"
LayoutBuilder::Setter title(const QString &title, BoolAspect *checker) LayoutBuilder::Setter title(const QString &title, BoolAspect *checker)

View File

@@ -14,6 +14,7 @@
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class QLayout; class QLayout;
class QTabWidget;
class QWidget; class QWidget;
QT_END_NAMESPACE QT_END_NAMESPACE
@@ -125,6 +126,12 @@ public:
explicit Stretch(int stretch = 1); 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 class QTCREATOR_UTILS_EXPORT Break : public LayoutItem
{ {
public: public:
@@ -161,6 +168,10 @@ private:
namespace Layouting { namespace Layouting {
using Space = LayoutBuilder::Space;
using Span = LayoutBuilder::Span;
using Tab = LayoutBuilder::Tab;
QTCREATOR_UTILS_EXPORT LayoutBuilder::Setter title(const QString &title, QTCREATOR_UTILS_EXPORT LayoutBuilder::Setter title(const QString &title,
BoolAspect *checker = nullptr); BoolAspect *checker = nullptr);
@@ -182,6 +193,13 @@ public:
PushButton(std::initializer_list<LayoutItem> items); PushButton(std::initializer_list<LayoutItem> items);
}; };
class QTCREATOR_UTILS_EXPORT TabWidget : public LayoutBuilder::LayoutItem
{
public:
TabWidget(std::initializer_list<Tab> tabs);
TabWidget(QTabWidget *tabWidget, std::initializer_list<Tab> tabs);
};
class QTCREATOR_UTILS_EXPORT Column : public LayoutBuilder class QTCREATOR_UTILS_EXPORT Column : public LayoutBuilder
{ {
public: public:
@@ -224,9 +242,6 @@ public:
Splitter(std::initializer_list<LayoutItem> items) : LayoutBuilder(StackLayout, items) {} Splitter(std::initializer_list<LayoutItem> items) : LayoutBuilder(StackLayout, items) {}
}; };
using Space = LayoutBuilder::Space;
using Span = LayoutBuilder::Span;
QTCREATOR_UTILS_EXPORT extern LayoutBuilder::Break br; QTCREATOR_UTILS_EXPORT extern LayoutBuilder::Break br;
QTCREATOR_UTILS_EXPORT extern LayoutBuilder::Stretch st; QTCREATOR_UTILS_EXPORT extern LayoutBuilder::Stretch st;
QTCREATOR_UTILS_EXPORT extern LayoutBuilder::Space empty; QTCREATOR_UTILS_EXPORT extern LayoutBuilder::Space empty;