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
formbuilderextra_p.h
Go to the documentation of this file.
1// Copyright (C) 2020 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef ABSTRACTFORMBUILDERPRIVATE_H
5#define ABSTRACTFORMBUILDERPRIVATE_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include "uilib_global.h"
19
20#include <QtCore/qhash.h>
21#include <QtCore/qpointer.h>
22#include <QtCore/qstringlist.h>
23#include <QtCore/qmap.h>
24#include <QtCore/qdir.h>
25#include <QtCore/qversionnumber.h>
26#include <QtGui/qpalette.h>
27
28QT_BEGIN_NAMESPACE
29
30class QDesignerCustomWidgetInterface;
31class QObject;
32class QVariant;
33class QWidget;
34class QObject;
35class QLabel;
36class QButtonGroup;
37class QBoxLayout;
38class QGridLayout;
39class QAction;
40class QActionGroup;
41
42#ifdef QFORMINTERNAL_NAMESPACE
43namespace QFormInternal
44{
45#endif
46
47class DomBrush;
48class DomButtonGroups;
49class DomButtonGroup;
50class DomColorGroup;
51class DomCustomWidget;
52class DomPalette;
53class DomProperty;
54class DomUI;
55
56class QAbstractFormBuilder;
57class QResourceBuilder;
58class QTextBuilder;
59
61{
62public:
63 Q_DISABLE_COPY_MOVE(QFormBuilderExtra);
64
65 QFormBuilderExtra();
66 ~QFormBuilderExtra();
67
68 struct CustomWidgetData {
69 CustomWidgetData();
70 explicit CustomWidgetData(const DomCustomWidget *dc);
71
72 QString addPageMethod;
73 QString script;
74 QString baseClass;
75 bool isContainer = false;
76 };
77
78 void clear();
79
80 DomUI *readUi(QIODevice *dev);
81 static QString msgInvalidUiFile();
82
83 bool applyPropertyInternally(QObject *o, const QString &propertyName, const QVariant &value);
84
85 enum BuddyMode { BuddyApplyAll, BuddyApplyVisibleOnly };
86
87 void applyInternalProperties() const;
88 static bool applyBuddy(const QString &buddyName, BuddyMode applyMode, QLabel *label);
89
90 const QPointer<QWidget> &parentWidget() const;
91 bool parentWidgetIsSet() const;
92 void setParentWidget(const QPointer<QWidget> &w);
93
94 void setProcessingLayoutWidget(bool processing);
95 bool processingLayoutWidget() const;
96
97 void setResourceBuilder(QResourceBuilder *builder);
98 QResourceBuilder *resourceBuilder() const;
99
100 void setTextBuilder(QTextBuilder *builder);
101 QTextBuilder *textBuilder() const;
102
103 void storeCustomWidgetData(const QString &className, const DomCustomWidget *d);
104 QString customWidgetAddPageMethod(const QString &className) const;
105 QString customWidgetBaseClass(const QString &className) const;
106 bool isCustomWidgetContainer(const QString &className) const;
107
108 // --- Hash used in creating button groups on demand. Store a map of name and pair of dom group and real group
109 void registerButtonGroups(const DomButtonGroups *groups);
110
111 using ButtonGroupEntry = std::pair<DomButtonGroup *, QButtonGroup *>;
112 using ButtonGroupHash = QHash<QString, ButtonGroupEntry>;
113 const ButtonGroupHash &buttonGroups() const { return m_buttonGroups; }
114 ButtonGroupHash &buttonGroups() { return m_buttonGroups; }
115
116 static void getLayoutMargins(const QList<DomProperty*> &properties,
117 int *left, int *top, int *right, int *bottom);
118
119 // return stretch as a comma-separated list
120 static QString boxLayoutStretch(const QBoxLayout*);
121 // apply stretch
122 static bool setBoxLayoutStretch(const QString &, QBoxLayout*);
123 static void clearBoxLayoutStretch(QBoxLayout*);
124
125 static QString gridLayoutRowStretch(const QGridLayout *);
126 static bool setGridLayoutRowStretch(const QString &, QGridLayout *);
127 static void clearGridLayoutRowStretch(QGridLayout *);
128
129 static QString gridLayoutColumnStretch(const QGridLayout *);
130 static bool setGridLayoutColumnStretch(const QString &, QGridLayout *);
131 static void clearGridLayoutColumnStretch(QGridLayout *);
132
133 // return the row/column sizes as comma-separated lists
134 static QString gridLayoutRowMinimumHeight(const QGridLayout *);
135 static bool setGridLayoutRowMinimumHeight(const QString &, QGridLayout *);
136 static void clearGridLayoutRowMinimumHeight(QGridLayout *);
137
138 static QString gridLayoutColumnMinimumWidth(const QGridLayout *);
139 static bool setGridLayoutColumnMinimumWidth(const QString &, QGridLayout *);
140 static void clearGridLayoutColumnMinimumWidth(QGridLayout *);
141
142 static void setPixmapProperty(DomProperty *p, const std::pair<QString, QString> &ip);
143 static QPalette loadPalette(const DomPalette *dom);
144 static void setupColorGroup(QPalette *palette, QPalette::ColorGroup colorGroup,
145 const DomColorGroup *group);
146 static DomColorGroup *saveColorGroup(const QPalette &palette,
147 QPalette::ColorGroup colorGroup);
148 static DomPalette *savePalette(const QPalette &palette);
149 static QBrush setupBrush(const DomBrush *brush);
150 static DomBrush *saveBrush(const QBrush &br);
151
152 static DomProperty *propertyByName(const QList<DomProperty*> &properties,
153 QAnyStringView needle);
154
155 static bool isQFontComboBox(const QWidget *w);
156
157 QStringList m_pluginPaths;
158 QMap<QString, QDesignerCustomWidgetInterface*> m_customWidgets;
159
160 QHash<QObject*, bool> m_laidout;
161 QHash<QString, QAction*> m_actions;
162 QHash<QString, QActionGroup*> m_actionGroups;
163 bool m_fullyQualifiedEnums = true;
164 QVersionNumber m_saveVersion{ QT_VERSION_MAJOR, QT_VERSION_MINOR, QT_VERSION_PATCH };
165 int m_defaultMargin;
166 int m_defaultSpacing;
167 QDir m_workingDirectory;
168 QString m_errorString;
169 QString m_language;
170
171private:
172 void clearResourceBuilder();
173 void clearTextBuilder();
174
175 QHash<QLabel *, QString> m_buddies;
176
177 QHash<QString, CustomWidgetData> m_customWidgetDataHash;
178
179 ButtonGroupHash m_buttonGroups;
180
181 bool m_layoutWidget = false;
182 QResourceBuilder *m_resourceBuilder = nullptr;
183 QTextBuilder *m_textBuilder = nullptr;
184
185 QPointer<QWidget> m_parentWidget;
186 bool m_parentWidgetIsSet = false;
187};
188
189void uiLibWarning(const QString &message);
190
191// Struct with static accessor that provides most strings used in the form builder.
193 QFormBuilderStrings();
194
195 static const QFormBuilderStrings &instance();
196
197 static constexpr auto titleAttribute = QLatin1StringView("title");
198 static constexpr auto labelAttribute = QLatin1StringView("label");
199 static constexpr auto toolTipAttribute = QLatin1StringView("toolTip");
200 static constexpr auto whatsThisAttribute = QLatin1StringView("whatsThis");
201 static constexpr auto flagsAttribute = QLatin1StringView("flags");
202 static constexpr auto iconAttribute = QLatin1StringView("icon");
203 static constexpr auto textAttribute = QLatin1StringView("text") ;
204
205 using RoleNName = std::pair<Qt::ItemDataRole, QString>;
208
209 // first.first is primary role, first.second is shadow role.
210 // Shadow is used for either the translation source or the designer
211 // representation of the string value.
212 using TextRoleNName = std::pair<std::pair<Qt::ItemDataRole, Qt::ItemDataRole>, QString>;
214 QHash<QString, std::pair<Qt::ItemDataRole, Qt::ItemDataRole> > treeItemTextRoleHash;
215};
216#ifdef QFORMINTERNAL_NAMESPACE
217}
218#endif
219
220QT_END_NAMESPACE
221
222#endif // ABSTRACTFORMBUILDERPRIVATE_H
friend class QWidget
Definition qpainter.h:432
\inmodule QtSql
\inmodule QtCore
Definition qvariant.h:68
void uiLibWarning(const QString &message)
Combined button and popup list for selecting options.
static bool isOfType(const QMetaObject *what, const QMetaObject *type)
static bool applySimpleProperty(const QVariant &v, bool translateString, DomProperty *dom_prop)
static QMetaEnum fontWeightMetaEnum()
DomProperty * variantToDomProperty(QAbstractFormBuilder *afb, const QMetaObject *meta, const QString &pname, const QVariant &v)
static QString flagsValue(QMetaEnum metaEnum, int v, const QVersionNumber &qtVersion)
static QString msgCannotWriteProperty(const QString &pname, const QVariant &v)
static bool isTranslatable(const QString &pname, const QVariant &v, const QMetaObject *meta)
static QString enumPrefix(QMetaEnum metaEnum)
static bool supportsQualifiedEnums(const QVersionNumber &qtVersion)
QVariant domPropertyToVariant(QAbstractFormBuilder *afb, const QMetaObject *meta, const DomProperty *p)
QVariant domPropertyToVariant(const DomProperty *p)
static QString enumValue(QMetaEnum metaEnum, int v, const QVersionNumber &qtVersion)
EnumType enumKeyOfObjectToValue(const char *enumName, const char *key)
QMetaEnum metaEnum(const char *name)
EnumType enumKeysToValue(const QMetaEnum &metaEnum, const char *keys, const EnumType *=nullptr)
EnumType enumKeyToValue(const QMetaEnum &metaEnum, const char *key, const EnumType *=nullptr)
static constexpr auto toolTipAttribute
static constexpr auto flagsAttribute
static constexpr auto whatsThisAttribute
static constexpr auto titleAttribute
static constexpr auto labelAttribute
static constexpr auto iconAttribute
static constexpr auto textAttribute
QList< TextRoleNName > itemTextRoles
QHash< QString, Qt::ItemDataRole > treeItemRoleHash
static const QFormBuilderStrings & instance()
QList< RoleNName > itemRoles
#define QDESIGNER_UILIB_IMPORT
Definition ui4.h:29
#define QDESIGNER_UILIB_EXPORT
Definition ui4.h:36