Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
default_container.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
4#ifndef DEFAULT_CONTAINER_H
5#define DEFAULT_CONTAINER_H
6
7#include <QtDesigner/container.h>
8#include <QtDesigner/extension.h>
9#include <extensionfactory_p.h>
10
11#include <QtWidgets/qstackedwidget.h>
12#include <QtWidgets/qtabwidget.h>
13#include <QtWidgets/qtoolbox.h>
14#include <QtWidgets/qscrollarea.h>
15#include <QtWidgets/qdockwidget.h>
16
18
19namespace qdesigner_internal {
20
21// ------------ QStackedWidgetContainer
23{
24 Q_OBJECT
25 Q_INTERFACES(QDesignerContainerExtension)
26public:
28
29 int count() const override { return m_widget->count(); }
30 QWidget *widget(int index) const override { return m_widget->widget(index); }
31
32 int currentIndex() const override { return m_widget->currentIndex(); }
33 void setCurrentIndex(int index) override;
34
35 bool canAddWidget() const override { return true; }
36 void addWidget(QWidget *widget) override;
37 void insertWidget(int index, QWidget *widget) override;
38 bool canRemove(int) const override { return true; }
39 void remove(int index) override;
40
41private:
42 QStackedWidget *m_widget;
43};
44
45// ------------ QTabWidgetContainer
47{
48 Q_OBJECT
49 Q_INTERFACES(QDesignerContainerExtension)
50public:
51 explicit QTabWidgetContainer(QTabWidget *widget, QObject *parent = nullptr);
52
53 int count() const override { return m_widget->count(); }
54 QWidget *widget(int index) const override { return m_widget->widget(index); }
55
56 int currentIndex() const override { return m_widget->currentIndex(); }
57 void setCurrentIndex(int index) override;
58
59 bool canAddWidget() const override { return true; }
60 void addWidget(QWidget *widget) override;
61 void insertWidget(int index, QWidget *widget) override;
62 bool canRemove(int) const override { return true; }
63 void remove(int index) override;
64
65private:
66 QTabWidget *m_widget;
67};
68
69// ------------ QToolBoxContainer
71{
72 Q_OBJECT
73 Q_INTERFACES(QDesignerContainerExtension)
74public:
75 explicit QToolBoxContainer(QToolBox *widget, QObject *parent = nullptr);
76
77 int count() const override { return m_widget->count(); }
78 QWidget *widget(int index) const override { return m_widget->widget(index); }
79
80 int currentIndex() const override { return m_widget->currentIndex(); }
81 void setCurrentIndex(int index) override;
82
83 bool canAddWidget() const override { return true; }
84 void addWidget(QWidget *widget) override;
85 void insertWidget(int index, QWidget *widget) override;
86 bool canRemove(int) const override { return true; }
87 void remove(int index) override;
88
89private:
90 QToolBox *m_widget;
91};
92
93// ------------ SingleChildContainer:
94// Template for containers that have a single child widget using widget()/setWidget().
95
96template <class Container>
98{
99protected:
100 explicit SingleChildContainer(Container *widget, bool active = true);
101public:
102 int count() const override;
103 QWidget *widget(int index) const override;
105 void setCurrentIndex(int /*index*/) override {}
106 void addWidget(QWidget *widget) override;
107 void insertWidget(int index, QWidget *widget) override;
108 void remove(int /*index*/) override {}
109
110 bool canAddWidget() const override { return false; }
111 bool canRemove(int) const override { return false; }
112
113private:
114 const bool m_active;
115 Container *m_container;
116};
117
118template <class Container>
119SingleChildContainer<Container>::SingleChildContainer(Container *widget, bool active) :
120 m_active(active),
121 m_container(widget)
122{
123}
124
125template <class Container>
126int SingleChildContainer<Container>::count() const
127{
128 return m_active && m_container->widget() ? 1 : 0;
129}
130
131template <class Container>
132QWidget *SingleChildContainer<Container>::widget(int /* index */) const
133{
134 return m_container->widget();
135}
136
137template <class Container>
138int SingleChildContainer<Container>::currentIndex() const
139{
140 return m_active && m_container->widget() ? 0 : -1;
141}
142
143template <class Container>
144void SingleChildContainer<Container>::addWidget(QWidget *widget)
145{
146 Q_ASSERT(m_container->widget() == nullptr);
147 widget->setParent(m_container);
148 m_container->setWidget(widget);
149}
150
151template <class Container>
152void SingleChildContainer<Container>::insertWidget(int /* index */, QWidget *widget)
153{
154 addWidget(widget);
155}
156
157// ------------ QScrollAreaContainer
159{
160 Q_OBJECT
161 Q_INTERFACES(QDesignerContainerExtension)
162public:
164};
165
166// --------------- QDockWidgetContainer
168{
169 Q_OBJECT
170 Q_INTERFACES(QDesignerContainerExtension)
171public:
173};
174
180} // namespace qdesigner_internal
181
182QT_END_NAMESPACE
183
184#endif // DEFAULT_CONTAINER_H
void insertWidget(int index, QWidget *widget) override
QWidget * widget(int index) const override
void addWidget(QWidget *widget) override
void insertWidget(int index, QWidget *widget) override
QWidget * widget(int index) const override
QWidget * widget(int index) const override
void insertWidget(int index, QWidget *widget) override
void addWidget(QWidget *widget) override
SingleChildContainer(Container *widget, bool active=true)
void addWidget(QWidget *widget) override
QWidget * widget(int index) const override
void insertWidget(int index, QWidget *widget) override
static void setCurrentContainerIndex(int index, Container *container)
static constexpr auto PageLabel
static void ensureNoParent(QWidget *widget)
Combined button and popup list for selecting options.
Auxiliary methods to store/retrieve settings.