LayoutBuilder: Turn Splitter into a LayoutItem

Change-Id: I05bdadf7f79966e215b4999db9c2f96cd8f67f9f
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Alessandro Portale
2023-01-11 14:43:41 +01:00
parent 11569852d4
commit e78f0b5911
3 changed files with 30 additions and 8 deletions

View File

@@ -11,6 +11,7 @@
#include <QGroupBox> #include <QGroupBox>
#include <QPushButton> #include <QPushButton>
#include <QStackedLayout> #include <QStackedLayout>
#include <QSplitter>
#include <QStyle> #include <QStyle>
#include <QTabWidget> #include <QTabWidget>
#include <QWidget> #include <QWidget>
@@ -496,6 +497,16 @@ PushButton::PushButton(std::initializer_list<LayoutItem> items)
applyItems(widget, items); applyItems(widget, items);
} }
Splitter::Splitter(std::initializer_list<LayoutItem> items)
: Splitter(new QSplitter(Qt::Vertical), items) {}
Splitter::Splitter(QSplitter *splitter, std::initializer_list<LayoutItem> items)
{
widget = splitter;
for (const LayoutItem &item : items)
splitter->addWidget(item.widget);
}
TabWidget::TabWidget(std::initializer_list<Tab> tabs) TabWidget::TabWidget(std::initializer_list<Tab> tabs)
: TabWidget(new QTabWidget, tabs) {} : TabWidget(new QTabWidget, tabs) {}

View File

@@ -14,6 +14,7 @@
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class QLayout; class QLayout;
class QSplitter;
class QTabWidget; class QTabWidget;
class QWidget; class QWidget;
QT_END_NAMESPACE QT_END_NAMESPACE
@@ -193,6 +194,13 @@ public:
PushButton(std::initializer_list<LayoutItem> items); PushButton(std::initializer_list<LayoutItem> items);
}; };
class QTCREATOR_UTILS_EXPORT Splitter : public LayoutBuilder::LayoutItem
{
public:
Splitter(std::initializer_list<LayoutItem> items);
Splitter(QSplitter *splitter, std::initializer_list<LayoutItem> items);
};
class QTCREATOR_UTILS_EXPORT TabWidget : public LayoutBuilder::LayoutItem class QTCREATOR_UTILS_EXPORT TabWidget : public LayoutBuilder::LayoutItem
{ {
public: public:
@@ -235,13 +243,6 @@ public:
Stack(std::initializer_list<LayoutItem> items) : LayoutBuilder(StackLayout, items) {} Stack(std::initializer_list<LayoutItem> items) : LayoutBuilder(StackLayout, items) {}
}; };
class QTCREATOR_UTILS_EXPORT Splitter : public LayoutBuilder
{
public:
Splitter() : LayoutBuilder(StackLayout) {}
Splitter(std::initializer_list<LayoutItem> items) : LayoutBuilder(StackLayout, items) {}
};
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;

View File

@@ -5,6 +5,7 @@
#include <QApplication> #include <QApplication>
#include <QLineEdit> #include <QLineEdit>
#include <QTextEdit>
using namespace Utils::Layouting; using namespace Utils::Layouting;
@@ -25,7 +26,16 @@ int main(int argc, char *argv[])
Row { Row {
PushButton { text("-"), onClicked(minusClick) }, PushButton { text("-"), onClicked(minusClick) },
lineEdit, 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(); }.emerge()->show();
return app.exec(); return app.exec();