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// Qt-Security score:significant reason:default
4
5#ifndef DEFAULT_CONTAINER_H
6#define DEFAULT_CONTAINER_H
7
8#include <QtDesigner/container.h>
9#include <QtDesigner/extension.h>
10#include <extensionfactory_p.h>
11
12#include <QtWidgets/qstackedwidget.h>
13#include <QtWidgets/qtabwidget.h>
14#include <QtWidgets/qtoolbox.h>
15#include <QtWidgets/qscrollarea.h>
16#include <QtWidgets/qdockwidget.h>
17
19
20namespace qdesigner_internal {
21
22// ------------ QStackedWidgetContainer
24{
25 Q_OBJECT
26 Q_INTERFACES(QDesignerContainerExtension)
27public:
29
30 int count() const override { return m_widget->count(); }
31 QWidget *widget(int index) const override { return m_widget->widget(index); }
32
33 int currentIndex() const override { return m_widget->currentIndex(); }
34 void setCurrentIndex(int index) override;
35
36 bool canAddWidget() const override { return true; }
37 void addWidget(QWidget *widget) override;
38 void insertWidget(int index, QWidget *widget) override;
39 bool canRemove(int) const override { return true; }
40 void remove(int index) override;
41
42private:
43 QStackedWidget *m_widget;
44};
45
46// ------------ QTabWidgetContainer
48{
49 Q_OBJECT
50 Q_INTERFACES(QDesignerContainerExtension)
51public:
52 explicit QTabWidgetContainer(QTabWidget *widget, QObject *parent = nullptr);
53
54 int count() const override { return m_widget->count(); }
55 QWidget *widget(int index) const override { return m_widget->widget(index); }
56
57 int currentIndex() const override { return m_widget->currentIndex(); }
58 void setCurrentIndex(int index) override;
59
60 bool canAddWidget() const override { return true; }
61 void addWidget(QWidget *widget) override;
62 void insertWidget(int index, QWidget *widget) override;
63 bool canRemove(int) const override { return true; }
64 void remove(int index) override;
65
66private:
67 QTabWidget *m_widget;
68};
69
70// ------------ QToolBoxContainer
72{
73 Q_OBJECT
74 Q_INTERFACES(QDesignerContainerExtension)
75public:
76 explicit QToolBoxContainer(QToolBox *widget, QObject *parent = nullptr);
77
78 int count() const override { return m_widget->count(); }
79 QWidget *widget(int index) const override { return m_widget->widget(index); }
80
81 int currentIndex() const override { return m_widget->currentIndex(); }
82 void setCurrentIndex(int index) override;
83
84 bool canAddWidget() const override { return true; }
85 void addWidget(QWidget *widget) override;
86 void insertWidget(int index, QWidget *widget) override;
87 bool canRemove(int) const override { return true; }
88 void remove(int index) override;
89
90private:
91 QToolBox *m_widget;
92};
93
94// ------------ SingleChildContainer:
95// Template for containers that have a single child widget using widget()/setWidget().
96
97template <class Container>
99{
100protected:
101 explicit SingleChildContainer(Container *widget, bool active = true);
102public:
103 int count() const override;
104 QWidget *widget(int index) const override;
106 void setCurrentIndex(int /*index*/) override {}
107 void addWidget(QWidget *widget) override;
108 void insertWidget(int index, QWidget *widget) override;
109 void remove(int /*index*/) override {}
110
111 bool canAddWidget() const override { return false; }
112 bool canRemove(int) const override { return false; }
113
114private:
115 const bool m_active;
116 Container *m_container;
117};
118
119template <class Container>
120SingleChildContainer<Container>::SingleChildContainer(Container *widget, bool active) :
121 m_active(active),
122 m_container(widget)
123{
124}
125
126template <class Container>
127int SingleChildContainer<Container>::count() const
128{
129 return m_active && m_container->widget() ? 1 : 0;
130}
131
132template <class Container>
133QWidget *SingleChildContainer<Container>::widget(int /* index */) const
134{
135 return m_container->widget();
136}
137
138template <class Container>
139int SingleChildContainer<Container>::currentIndex() const
140{
141 return m_active && m_container->widget() ? 0 : -1;
142}
143
144template <class Container>
145void SingleChildContainer<Container>::addWidget(QWidget *widget)
146{
147 Q_ASSERT(m_container->widget() == nullptr);
148 widget->setParent(m_container);
149 m_container->setWidget(widget);
150}
151
152template <class Container>
153void SingleChildContainer<Container>::insertWidget(int /* index */, QWidget *widget)
154{
155 addWidget(widget);
156}
157
158// ------------ QScrollAreaContainer
160{
161 Q_OBJECT
162 Q_INTERFACES(QDesignerContainerExtension)
163public:
165};
166
167// --------------- QDockWidgetContainer
169{
170 Q_OBJECT
171 Q_INTERFACES(QDesignerContainerExtension)
172public:
174};
175
181} // namespace qdesigner_internal
182
183QT_END_NAMESPACE
184
185#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.