summaryrefslogtreecommitdiffstats
path: root/tests/manual/examples/widgets/layouts/borderlayout/borderlayout.h
diff options
context:
space:
mode:
Diffstat (limited to 'tests/manual/examples/widgets/layouts/borderlayout/borderlayout.h')
-rw-r--r--tests/manual/examples/widgets/layouts/borderlayout/borderlayout.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/manual/examples/widgets/layouts/borderlayout/borderlayout.h b/tests/manual/examples/widgets/layouts/borderlayout/borderlayout.h
new file mode 100644
index 0000000000..c1d3ae7204
--- /dev/null
+++ b/tests/manual/examples/widgets/layouts/borderlayout/borderlayout.h
@@ -0,0 +1,50 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#ifndef BORDERLAYOUT_H
+#define BORDERLAYOUT_H
+
+#include <QLayout>
+#include <QRect>
+
+class BorderLayout : public QLayout
+{
+public:
+ enum Position { West, North, South, East, Center };
+
+ explicit BorderLayout(QWidget *parent, const QMargins &margins = QMargins(), int spacing = -1);
+ BorderLayout(int spacing = -1);
+ ~BorderLayout();
+
+ void addItem(QLayoutItem *item) override;
+ void addWidget(QWidget *widget, Position position);
+ Qt::Orientations expandingDirections() const override;
+ bool hasHeightForWidth() const override;
+ int count() const override;
+ QLayoutItem *itemAt(int index) const override;
+ QSize minimumSize() const override;
+ void setGeometry(const QRect &rect) override;
+ QSize sizeHint() const override;
+ QLayoutItem *takeAt(int index) override;
+
+ void add(QLayoutItem *item, Position position);
+
+private:
+ struct ItemWrapper
+ {
+ ItemWrapper(QLayoutItem *i, Position p) {
+ item = i;
+ position = p;
+ }
+
+ QLayoutItem *item;
+ Position position;
+ };
+
+ enum SizeType { MinimumSize, SizeHint };
+ QSize calculateSize(SizeType sizeType) const;
+
+ QList<ItemWrapper *> list;
+};
+
+#endif // BORDERLAYOUT_H