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 <QPushButton>
#include <QStackedLayout>
#include <QSplitter>
#include <QStyle>
#include <QTabWidget>
#include <QWidget>
@@ -496,6 +497,16 @@ PushButton::PushButton(std::initializer_list<LayoutItem> 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(new QTabWidget, tabs) {}

View File

@@ -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<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
{
public:
@@ -235,13 +243,6 @@ public:
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::Stretch st;
QTCREATOR_UTILS_EXPORT extern LayoutBuilder::Space empty;

View File

@@ -5,6 +5,7 @@
#include <QApplication>
#include <QLineEdit>
#include <QTextEdit>
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();