Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
writeincludesbase.cpp
Go to the documentation of this file.
1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
4#include "writeincludesbase.h"
5#include "ui4.h"
6#include <uic.h>
7#include <databaseinfo.h>
8
10
12#define QT_CLASS_LIB(klass, module, header) { #klass, #module, #header },
13#include "qclass_lib_map.h"
14#undef QT_CLASS_LIB
15};
16
18{
19 const ClassInfoEntry *classLibEnd = qclass_lib_map + sizeof(qclass_lib_map)/sizeof(ClassInfoEntry);
20 return {qclass_lib_map, classLibEnd};
21}
22
23// Base class for implementing a class that determines includes and equivalents
24// in other languages by implementing doAdd(). It makes sure all dependent
25// classes are known.
27{
28}
29
31{
32 m_knownClasses.clear();
33 m_laidOut = false;
34
35 if (node->elementIncludes())
37
38 // Populate known custom widgets first
39 if (node->elementCustomWidgets())
41
42 add(QStringLiteral("QApplication"));
43 add(QStringLiteral("QVariant"));
44
45 if (node->elementButtonGroups())
46 add(QStringLiteral("QButtonGroup"));
47
49}
50
56
58{
59 add(node->attributeClass());
60 m_laidOut = true;
62}
63
69
71{
72 if (node->kind() == DomProperty::Date)
73 add(QStringLiteral("QDate"));
74 if (node->kind() == DomProperty::Locale)
75 add(QStringLiteral("QLocale"));
76 if (node->kind() == DomProperty::IconSet)
77 add(QStringLiteral("QIcon"));
79}
80
82{
83 if (className.isEmpty() || m_knownClasses.contains(className))
84 return;
85
86 m_knownClasses.insert(className);
87
88 const CustomWidgetsInfo *cwi = m_uic->customWidgetsInfo();
89 static const QStringList treeViewsWithHeaders = {
90 QStringLiteral("QTreeView"), QStringLiteral("QTreeWidget"),
91 QStringLiteral("QTableView"), QStringLiteral("QTableWidget")
92 };
93 if (cwi->extendsOneOf(className, treeViewsWithHeaders))
94 add(QStringLiteral("QHeaderView"));
95
96 if (!m_laidOut && cwi->extends(className, "QToolBox"))
97 add(QStringLiteral("QLayout")); // spacing property of QToolBox)
98
99 if (className == QStringLiteral("Line")) { // ### hmm, deprecate me!
100 add(QStringLiteral("QFrame"));
101 return;
102 }
103
104 if (cwi->extends(className, "QDialogButtonBox"))
105 add(QStringLiteral("QAbstractButton")); // for signal "clicked(QAbstractButton*)"
106
107 doAdd(className, dcw);
108}
109
111{
112 const QString className = node->elementClass();
113 if (!className.isEmpty())
114 add(className, node);
115}
116
122
128
134
QString elementClass() const
Definition ui4.h:664
QString attributeClass() const
Definition ui4.h:833
Kind kind() const
Definition ui4.h:2472
@ IconSet
Definition ui4.h:2471
Definition ui4.h:116
DomCustomWidgets * elementCustomWidgets() const
Definition ui4.h:205
DomIncludes * elementIncludes() const
Definition ui4.h:217
DomButtonGroups * elementButtonGroups() const
Definition ui4.h:247
QString attributeClass() const
Definition ui4.h:1095
void clear()
Definition qset.h:61
bool contains(const T &value) const
Definition qset.h:71
iterator insert(const T &value)
Definition qset.h:155
\inmodule QtCore
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
Definition uic.h:30
const CustomWidgetsInfo * customWidgetsInfo() const
Definition uic.h:56
virtual void doAdd(const QString &className, const DomCustomWidget *dcw=nullptr)=0
void acceptActionRef(DomActionRef *node) override
void acceptSpacer(DomSpacer *node) override
void acceptCustomWidget(DomCustomWidget *node) override
void add(const QString &className, const DomCustomWidget *dcw=nullptr)
void acceptUI(DomUI *node) override
void acceptLayout(DomLayout *node) override
void acceptWidget(DomWidget *node) override
void acceptActionGroup(DomActionGroup *node) override
void acceptAction(DomAction *node) override
void acceptProperty(DomProperty *node) override
Combined button and popup list for selecting options.
#define QStringLiteral(str)
const char className[16]
[1]
Definition qwizard.cpp:100
virtual void acceptAction(DomAction *action)
virtual void acceptActionGroup(DomActionGroup *actionGroup)
virtual void acceptProperty(DomProperty *property)
virtual void acceptIncludes(DomIncludes *includes)
virtual void acceptSpacer(DomSpacer *spacer)
virtual void acceptCustomWidgets(DomCustomWidgets *customWidgets)
virtual void acceptActionRef(DomActionRef *actionRef)
virtual void acceptWidget(DomWidget *widget)
virtual void acceptUI(DomUI *ui)
Definition treewalker.cpp:9
virtual void acceptLayout(DomLayout *layout)
ClassInfoEntries classInfoEntries()
static QT_BEGIN_NAMESPACE const ClassInfoEntry qclass_lib_map[]