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.cpp
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
6#include <QtCore/qdebug.h>
7
9
10using namespace Qt::StringLiterals;
11
12template <class Container>
13static inline void setCurrentContainerIndex(int index, Container *container)
14{
15 const bool blocked = container->signalsBlocked();
16 container->blockSignals(true);
17 container->setCurrentIndex(index);
18 container->blockSignals(blocked);
19}
20
21static inline void ensureNoParent(QWidget *widget)
22{
23 if (widget->parentWidget())
24 widget->setParent(nullptr);
25}
26
27static constexpr auto PageLabel = "Page"_L1;
28
29namespace qdesigner_internal {
30
31// --------- QStackedWidgetContainer
32QStackedWidgetContainer::QStackedWidgetContainer(QStackedWidget *widget, QObject *parent) :
33 QObject(parent),
34 m_widget(widget)
35{
36}
37
39{
40 setCurrentContainerIndex(index, m_widget);
41}
42
43void QStackedWidgetContainer::addWidget(QWidget *widget)
44{
45 ensureNoParent(widget);
46 m_widget->addWidget(widget);
47}
48
49void QStackedWidgetContainer::insertWidget(int index, QWidget *widget)
50{
51 ensureNoParent(widget);
52 m_widget->insertWidget(index, widget);
53}
54
56{
57 m_widget->removeWidget(widget(index));
58}
59
60// --------- QTabWidgetContainer
61QTabWidgetContainer::QTabWidgetContainer(QTabWidget *widget, QObject *parent) :
62 QObject(parent),
63 m_widget(widget)
64{
65}
66
68{
69 setCurrentContainerIndex(index, m_widget);
70}
71
72void QTabWidgetContainer::addWidget(QWidget *widget)
73{
74 ensureNoParent(widget);
75 m_widget->addTab(widget, QString::fromUtf8(PageLabel));
76}
77
78void QTabWidgetContainer::insertWidget(int index, QWidget *widget)
79{
80 ensureNoParent(widget);
81 m_widget->insertTab(index, widget, QString::fromUtf8(PageLabel));
82}
83
85{
86 m_widget->removeTab(index);
87}
88
89// ------------------- QToolBoxContainer
90QToolBoxContainer::QToolBoxContainer(QToolBox *widget, QObject *parent) :
91 QObject(parent),
92 m_widget(widget)
93{
94}
95
97{
98 setCurrentContainerIndex(index, m_widget);
99}
100
101void QToolBoxContainer::addWidget(QWidget *widget)
102{
103 ensureNoParent(widget);
104 m_widget->addItem(widget, QString::fromUtf8(PageLabel));
105}
106
107void QToolBoxContainer::insertWidget(int index, QWidget *widget)
108{
109 ensureNoParent(widget);
110 m_widget->insertItem(index, widget, QString::fromUtf8(PageLabel));
111}
112
113void QToolBoxContainer::remove(int index)
114{
115 m_widget->removeItem(index);
116}
117
118// ------------------- QScrollAreaContainer
119// We pass on active=true only if there are no children yet.
120// If there are children, it is a legacy custom widget QScrollArea that has an internal,
121// unmanaged child, in which case we deactivate the extension (otherwise we crash).
122// The child will then not show up in the task menu
123
124QScrollAreaContainer::QScrollAreaContainer(QScrollArea *widget, QObject *parent) :
125 QObject(parent),
126 SingleChildContainer<QScrollArea>(widget, widget->widget() == nullptr)
127{
128}
129// ------------------- QDockWidgetContainer
130QDockWidgetContainer::QDockWidgetContainer(QDockWidget *widget, QObject *parent) :
131 QObject(parent),
132 SingleChildContainer<QDockWidget>(widget)
133{
134}
135
136}
137
138QT_END_NAMESPACE
void insertWidget(int index, QWidget *widget) override
void addWidget(QWidget *widget) override
void insertWidget(int index, QWidget *widget) override
void insertWidget(int index, QWidget *widget) override
void addWidget(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.