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