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
abstractformbuilder.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// Qt-Security score:significant reason:default
4
5#ifndef ABSTRACTFORMBUILDER_H
6#define ABSTRACTFORMBUILDER_H
7
8#if defined(QT_BUILD_UITOOLS_LIB)
9# if 0
10# pragma qt_sync_suspend_processing
11# endif
12# include "uilib_global.h"
13# if 0
14# pragma qt_sync_resume_processing
15# endif
16#else
17# include <QtDesigner/uilib_global.h>
18#endif
19
20#include <QtCore/qlist.h>
21#include <QtCore/qhash.h>
22#include <QtCore/qdir.h>
23#include <QtCore/qscopedpointer.h>
24
25#include <QtWidgets/qsizepolicy.h>
26#include <QtGui/qpalette.h>
27
29#if 0
30// pragma for syncqt, don't remove.
31
32#pragma qt_class(QAbstractFormBuilder)
33#endif
34
35class QAction;
36class QButtonGroup;
37class QActionGroup;
38class QComboBox;
39class QIODevice;
40class QIcon;
41class QLayout;
42class QLayoutItem;
43class QListWidget;
44class QObject;
45class QSpacerItem;
46class QTreeWidget;
47class QTableWidget;
48class QVariant;
49class QWidget;
50class QAbstractButton;
51class QAbstractItemView;
52
53#ifdef QFORMINTERNAL_NAMESPACE
54namespace QFormInternal
55{
56#endif
57
58class DomAction;
59class DomActionGroup;
60class DomButtonGroup;
61class DomButtonGroups;
62class DomActionRef;
63class DomBrush;
64class DomColorGroup;
65class DomConnections;
66class DomCustomWidgets;
67class DomLayout;
68class DomLayoutItem;
69class DomProperty;
70class DomResources;
71class DomSpacer;
72class DomString;
73class DomTabStops;
74class DomUI;
75class DomWidget;
76class DomResourcePixmap;
77
78class QResourceBuilder;
79class QTextBuilder;
80class QFormBuilderExtra;
81
83{
84public:
85 Q_DISABLE_COPY_MOVE(QAbstractFormBuilder)
86
87 QAbstractFormBuilder();
88 virtual ~QAbstractFormBuilder();
89
90 QDir workingDirectory() const;
91 void setWorkingDirectory(const QDir &directory);
92
93 virtual QWidget *load(QIODevice *dev, QWidget *parentWidget = nullptr);
94 virtual void save(QIODevice *dev, QWidget *widget);
95
96 QString errorString() const;
97
98protected:
99//
100// load
101//
102 virtual void loadExtraInfo(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget);
103
104 virtual QWidget *create(DomUI *ui, QWidget *parentWidget);
105 virtual QWidget *create(DomWidget *ui_widget, QWidget *parentWidget);
106 virtual QLayout *create(DomLayout *ui_layout, QLayout *layout, QWidget *parentWidget);
107 virtual QLayoutItem *create(DomLayoutItem *ui_layoutItem, QLayout *layout, QWidget *parentWidget);
108
109 virtual QAction *create(DomAction *ui_action, QObject *parent);
110 virtual QActionGroup *create(DomActionGroup *ui_action_group, QObject *parent);
111 virtual void addMenuAction(QAction *action);
112
113 virtual void applyProperties(QObject *o, const QList<DomProperty*> &properties);
114 bool applyPropertyInternally(QObject *o, const QString &propertyName, const QVariant &value);
115
116 virtual void applyTabStops(QWidget *widget, DomTabStops *tabStops);
117
118 virtual QWidget *createWidget(const QString &widgetName, QWidget *parentWidget, const QString &name);
119 virtual QLayout *createLayout(const QString &layoutName, QObject *parent, const QString &name);
120 virtual QAction *createAction(QObject *parent, const QString &name);
121 virtual QActionGroup *createActionGroup(QObject *parent, const QString &name);
122
123 virtual void createCustomWidgets(DomCustomWidgets *) {}
124 virtual void createConnections(DomConnections *, QWidget *) {}
125 virtual void createResources(DomResources*) {}
126
127 virtual bool addItem(DomLayoutItem *ui_item, QLayoutItem *item, QLayout *layout);
128 virtual bool addItem(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget);
129
130//
131// save
132//
133 virtual void saveExtraInfo(QWidget *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget);
134
135 virtual void saveDom(DomUI *ui, QWidget *widget);
136
137 virtual DomActionRef *createActionRefDom(QAction *action);
138
139 virtual DomWidget *createDom(QWidget *widget, DomWidget *ui_parentWidget, bool recursive = true);
140 virtual DomLayout *createDom(QLayout *layout, DomLayout *ui_layout, DomWidget *ui_parentWidget);
141 virtual DomLayoutItem *createDom(QLayoutItem *item, DomLayout *ui_parentLayout, DomWidget *ui_parentWidget);
142 virtual DomSpacer *createDom(QSpacerItem *spacer, DomLayout *ui_parentLayout, DomWidget *ui_parentWidget);
143
144 virtual DomAction *createDom(QAction *action);
145 virtual DomActionGroup *createDom(QActionGroup *actionGroup);
146 DomButtonGroup *createDom(QButtonGroup *buttonGroup);
147
148 virtual DomConnections *saveConnections();
149 virtual DomCustomWidgets *saveCustomWidgets();
150 virtual DomTabStops *saveTabStops();
151 virtual DomResources *saveResources();
152 DomButtonGroups *saveButtonGroups(const QWidget *mainContainer);
153 virtual QList<DomProperty*> computeProperties(QObject *obj);
154 virtual bool checkProperty(QObject *obj, const QString &prop) const;
155 virtual DomProperty *createProperty(QObject *object, const QString &propertyName, const QVariant &value);
156
157 virtual void layoutInfo(DomLayout *layout, QObject *parent, int *margin, int *spacing);
158
159 void loadListWidgetExtraInfo(DomWidget *ui_widget, QListWidget *listWidget, QWidget *parentWidget);
160 void loadTreeWidgetExtraInfo(DomWidget *ui_widget, QTreeWidget *treeWidget, QWidget *parentWidget);
161 void loadTableWidgetExtraInfo(DomWidget *ui_widget, QTableWidget *tableWidget, QWidget *parentWidget);
162 void loadComboBoxExtraInfo(DomWidget *ui_widget, QComboBox *comboBox, QWidget *parentWidget);
163 void loadButtonExtraInfo(const DomWidget *ui_widget, QAbstractButton *button, QWidget *parentWidget);
164 void loadItemViewExtraInfo(DomWidget *ui_widget, QAbstractItemView *itemView, QWidget *parentWidget);
165
166 void saveListWidgetExtraInfo(QListWidget *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget);
167 void saveTreeWidgetExtraInfo(QTreeWidget *treeWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget);
168 void saveTableWidgetExtraInfo(QTableWidget *tablWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget);
169 void saveComboBoxExtraInfo(QComboBox *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget);
170 void saveButtonExtraInfo(const QAbstractButton *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget);
171 void saveItemViewExtraInfo(const QAbstractItemView *itemView, DomWidget *ui_widget, DomWidget *ui_parentWidget);
172
173 void setResourceBuilder(QResourceBuilder *builder);
174 QResourceBuilder *resourceBuilder() const;
175 DomProperty *saveResource(const QVariant &v) const;
176
177 void setTextBuilder(QTextBuilder *builder);
178 QTextBuilder *textBuilder() const;
179 DomProperty *saveText(const QString &attributeName, const QVariant &v) const;
180//
181// utils
182//
183
184 QVariant toVariant(const QMetaObject *meta, DomProperty *property);
185 static QString toString(const DomString *str);
186
187 using DomPropertyHash = QHash<QString, DomProperty*>;
188 static DomPropertyHash propertyMap(const QList<DomProperty*> &properties);
189
190 void setupColorGroup(QPalette &palette, QPalette::ColorGroup colorGroup, DomColorGroup *group);
191 DomColorGroup *saveColorGroup(const QPalette &palette);
192 QBrush setupBrush(DomBrush *brush);
193 DomBrush *saveBrush(const QBrush &brush);
194
195 void reset();
196 void initialize(const DomUI *ui);
197
198//
199// utils
200//
201
202 static QMetaEnum toolBarAreaMetaEnum();
203
204//
205// Icon/pixmap stuff
206//
207 // A Pair of icon path/qrc path.
208 using IconPaths = std::pair<QString, QString>;
209
210 void setIconProperty(DomProperty &, const IconPaths &) const;
211 void setPixmapProperty(DomProperty &, const IconPaths &) const;
212
213 static const DomResourcePixmap *domPixmap(const DomProperty* p);
214
215private:
216//
217// utils
218//
219 static Qt::ToolBarArea toolbarAreaFromDOMAttributes(const DomPropertyHash &attributeMap);
220
221 friend QDESIGNER_UILIB_EXPORT DomProperty *variantToDomProperty(QAbstractFormBuilder *abstractFormBuilder, const QMetaObject *meta, const QString &propertyName, const QVariant &value);
222 friend QDESIGNER_UILIB_EXPORT QVariant domPropertyToVariant(QAbstractFormBuilder *abstractFormBuilder,const QMetaObject *meta, const DomProperty *property);
223
224protected:
225 QScopedPointer<QFormBuilderExtra> d;
226};
227
228#ifdef QFORMINTERNAL_NAMESPACE
229}
230#endif
231
232QT_END_NAMESPACE
233
234#endif // ABSTRACTFORMBUILDER_H
The QAbstractFormBuilder class provides a default implementation for classes that create user interfa...
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:30
#define QDESIGNER_UILIB_EXPORT
Definition ui4.h:37