QAbstractFormBuilder Class
The QAbstractFormBuilder class provides a default implementation for classes that create user interfaces at run-time. More...
Header: | #include <QAbstractFormBuilder> |
Inherited By: |
Public Functions
QAbstractFormBuilder() | |
virtual | ~QAbstractFormBuilder() |
QString | errorString() const |
virtual QWidget * | load(QIODevice *device, QWidget *parent = nullptr) |
virtual void | save(QIODevice *device, QWidget *widget) |
void | setWorkingDirectory(const QDir &directory) |
QDir | workingDirectory() const |
Protected Types
Protected Functions
virtual bool | addItem(DomLayoutItem *ui_item, QLayoutItem *item, QLayout *layout) |
virtual bool | addItem(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget) |
virtual void | addMenuAction(QAction *action) |
virtual void | applyProperties(QObject *o, const QList<DomProperty *> &properties) |
bool | applyPropertyInternally(QObject *o, const QString &propertyName, const QVariant &value) |
virtual void | applyTabStops(QWidget *widget, DomTabStops *tabStops) |
virtual bool | checkProperty(QObject *obj, const QString &prop) const |
virtual QList<DomProperty *> | computeProperties(QObject *obj) |
virtual QWidget * | create(DomUI *ui, QWidget *parentWidget) |
virtual QWidget * | create(DomWidget *ui_widget, QWidget *parentWidget) |
virtual QLayout * | create(DomLayout *ui_layout, QLayout *parentLayout, QWidget *parentWidget) |
virtual QLayoutItem * | create(DomLayoutItem *ui_layoutItem, QLayout *layout, QWidget *parentWidget) |
virtual QAction * | create(DomAction *ui_action, QObject *parent) |
virtual QActionGroup * | create(DomActionGroup *ui_action_group, QObject *parent) |
virtual QAction * | createAction(QObject *parent, const QString &name) |
virtual QActionGroup * | createActionGroup(QObject *parent, const QString &name) |
virtual DomActionRef * | createActionRefDom(QAction *action) |
virtual void | createConnections(DomConnections *, QWidget *) |
virtual void | createCustomWidgets(DomCustomWidgets *) |
virtual DomWidget * | createDom(QWidget *widget, DomWidget *ui_parentWidget, bool recursive = true) |
virtual DomLayout * | createDom(QLayout *layout, DomLayout *ui_layout, DomWidget *ui_parentWidget) |
virtual DomLayoutItem * | createDom(QLayoutItem *item, DomLayout *ui_layout, DomWidget *ui_parentWidget) |
virtual DomSpacer * | createDom(QSpacerItem *spacer, DomLayout *ui_layout, DomWidget *ui_parentWidget) |
virtual DomAction * | createDom(QAction *action) |
virtual DomActionGroup * | createDom(QActionGroup *actionGroup) |
DomButtonGroup * | createDom(QButtonGroup *buttonGroup) |
virtual QLayout * | createLayout(const QString &layoutName, QObject *parent, const QString &name) |
virtual DomProperty * | createProperty(QObject *obj, const QString &pname, const QVariant &v) |
virtual void | createResources(DomResources *) |
virtual QWidget * | createWidget(const QString &widgetName, QWidget *parentWidget, const QString &name) |
void | initialize(const DomUI *ui) |
virtual void | layoutInfo(DomLayout *ui_layout, QObject *parent, int *margin, int *spacing) |
void | loadButtonExtraInfo(const DomWidget *ui_widget, QAbstractButton *button, QWidget *parentWidget) |
void | loadComboBoxExtraInfo(DomWidget *ui_widget, QComboBox *comboBox, QWidget *parentWidget) |
virtual void | loadExtraInfo(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget) |
void | loadItemViewExtraInfo(DomWidget *ui_widget, QAbstractItemView *itemView, QWidget *parentWidget) |
void | loadListWidgetExtraInfo(DomWidget *ui_widget, QListWidget *listWidget, QWidget *parentWidget) |
void | loadTableWidgetExtraInfo(DomWidget *ui_widget, QTableWidget *tableWidget, QWidget *parentWidget) |
void | loadTreeWidgetExtraInfo(DomWidget *ui_widget, QTreeWidget *treeWidget, QWidget *parentWidget) |
void | reset() |
QResourceBuilder * | resourceBuilder() const |
void | saveButtonExtraInfo(const QAbstractButton *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget) |
DomButtonGroups * | saveButtonGroups(const QWidget *mainContainer) |
DomColorGroup * | saveColorGroup(const QPalette &palette) |
void | saveComboBoxExtraInfo(QComboBox *comboBox, DomWidget *ui_widget, DomWidget *ui_parentWidget) |
virtual DomConnections * | saveConnections() |
virtual DomCustomWidgets * | saveCustomWidgets() |
virtual void | saveDom(DomUI *ui, QWidget *widget) |
virtual void | saveExtraInfo(QWidget *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget) |
void | saveItemViewExtraInfo(const QAbstractItemView *itemView, DomWidget *ui_widget, DomWidget *ui_parentWidget) |
void | saveListWidgetExtraInfo(QListWidget *listWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget) |
DomProperty * | saveResource(const QVariant &v) const |
virtual DomResources * | saveResources() |
virtual DomTabStops * | saveTabStops() |
void | saveTableWidgetExtraInfo(QTableWidget *tableWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget) |
DomProperty * | saveText(const QString &attributeName, const QVariant &v) const |
void | saveTreeWidgetExtraInfo(QTreeWidget *treeWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget) |
void | setIconProperty(DomProperty &p, const int &ip) const |
void | setPixmapProperty(DomProperty &p, const int &ip) const |
void | setResourceBuilder(QResourceBuilder *builder) |
void | setTextBuilder(QTextBuilder *builder) |
QBrush | setupBrush(DomBrush *brush) |
void | setupColorGroup(QPalette &palette, QPalette::ColorGroup colorGroup, DomColorGroup *group) |
QTextBuilder * | textBuilder() const |
QVariant | toVariant(const QMetaObject *meta, DomProperty *p) |
Static Protected Members
const DomResourcePixmap * | domPixmap(const DomProperty *p) |
DomPropertyHash | propertyMap(const QList<DomProperty *> &properties) |
QString | toString(const DomString *str) |
QMetaEnum | toolBarAreaMetaEnum() |
Detailed Description
\inmodule
QtDesigner
QAbstractFormBuilder provides a standard interface and a default implementation for constructing forms from user interface files. It is not intended to be instantiated directly. Use the QFormBuilder class to create user interfaces from UI files at run-time. For example:
MyForm::MyForm(QWidget *parent) : QWidget(parent) { QFormBuilder builder; QFile file(":/forms/myWidget.ui"); file.open(QFile::ReadOnly); QWidget *myWidget = builder.load(&file, this); file.close(); auto *layout = new QVBoxLayout(this); layout->addWidget(myWidget); }
To override certain aspects of the form builder's behavior, subclass QAbstractFormBuilder and reimplement the relevant virtual functions:
- load() handles reading of UI format files from arbitrary QIODevices, and construction of widgets from the XML data that they contain.
- save() handles saving of widget details in UI format to arbitrary QIODevices.
- workingDirectory() and setWorkingDirectory() control the directory in which forms are held. The form builder looks for other resources on paths relative to this directory.
The QFormBuilder class is typically used by custom components and applications that embed Qt Designer. Standalone applications that need to dynamically generate user interfaces at run-time use the QUiLoader, found in the Qt UI Tools module.
See also Qt UI Tools.
Member Type Documentation
[alias]
QAbstractFormBuilder::DomPropertyHash
\internal
Member Function Documentation
QAbstractFormBuilder::QAbstractFormBuilder()
Constructs a new form builder.
[virtual noexcept]
QAbstractFormBuilder::~QAbstractFormBuilder()
Destroys the form builder.
[virtual protected]
bool QAbstractFormBuilder::addItem(DomLayoutItem *ui_item, QLayoutItem *item, QLayout *layout)
\internal
[virtual protected]
bool QAbstractFormBuilder::addItem(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget)
\internal
[virtual protected]
void QAbstractFormBuilder::addMenuAction(QAction *action)
\internal
[virtual protected]
void QAbstractFormBuilder::applyProperties(QObject *o, const QList<DomProperty *> &properties)
\internal
[protected]
bool QAbstractFormBuilder::applyPropertyInternally(QObject *o, const QString &propertyName, const QVariant &value)
\internal
Check whether a property is applied internally by QAbstractFormBuilder. Call this from overwritten applyProperties().
[virtual protected]
void QAbstractFormBuilder::applyTabStops(QWidget *widget, DomTabStops *tabStops)
\internal
[virtual protected]
bool QAbstractFormBuilder::checkProperty(QObject *obj, const QString &prop) const
\internal
[virtual protected]
QList<DomProperty *> QAbstractFormBuilder::computeProperties(QObject *obj)
\internal
[virtual protected]
QWidget *QAbstractFormBuilder::create(DomUI *ui, QWidget *parentWidget)
\internal
[virtual protected]
QWidget *QAbstractFormBuilder::create(DomWidget *ui_widget, QWidget *parentWidget)
\internal
[virtual protected]
QLayout *QAbstractFormBuilder::create(DomLayout *ui_layout, QLayout *parentLayout, QWidget *parentWidget)
\internal
[virtual protected]
QLayoutItem *QAbstractFormBuilder::create(DomLayoutItem *ui_layoutItem, QLayout *layout, QWidget *parentWidget)
\internal
[virtual protected]
QAction *QAbstractFormBuilder::create(DomAction *ui_action, QObject *parent)
\internal
[virtual protected]
QActionGroup *QAbstractFormBuilder::create(DomActionGroup *ui_action_group, QObject *parent)
\internal
[virtual protected]
QAction *QAbstractFormBuilder::createAction(QObject *parent, const QString &name)
\internal
[virtual protected]
QActionGroup *QAbstractFormBuilder::createActionGroup(QObject *parent, const QString &name)
\internal
[virtual protected]
DomActionRef *QAbstractFormBuilder::createActionRefDom(QAction *action)
\internal
[virtual protected]
void QAbstractFormBuilder::createConnections(DomConnections *, QWidget *)
\internal
[virtual protected]
void QAbstractFormBuilder::createCustomWidgets(DomCustomWidgets *)
\internal
[virtual protected]
DomWidget *QAbstractFormBuilder::createDom(QWidget *widget, DomWidget *ui_parentWidget, bool recursive = true)
\internal
[virtual protected]
DomLayout *QAbstractFormBuilder::createDom(QLayout *layout, DomLayout *ui_layout, DomWidget *ui_parentWidget)
\internal
[virtual protected]
DomLayoutItem *QAbstractFormBuilder::createDom(QLayoutItem *item, DomLayout *ui_layout, DomWidget *ui_parentWidget)
\internal
[virtual protected]
DomSpacer *QAbstractFormBuilder::createDom(QSpacerItem *spacer, DomLayout *ui_layout, DomWidget *ui_parentWidget)
\internal
[virtual protected]
DomAction *QAbstractFormBuilder::createDom(QAction *action)
\internal
[virtual protected]
DomActionGroup *QAbstractFormBuilder::createDom(QActionGroup *actionGroup)
\internal
[protected]
DomButtonGroup *QAbstractFormBuilder::createDom(QButtonGroup *buttonGroup)
\internal
\since
4.5
[virtual protected]
QLayout *QAbstractFormBuilder::createLayout(const QString &layoutName, QObject *parent, const QString &name)
\internal
[virtual protected]
DomProperty *QAbstractFormBuilder::createProperty(QObject *obj, const QString &pname, const QVariant &v)
\internal
[virtual protected]
void QAbstractFormBuilder::createResources(DomResources *)
\internal
[virtual protected]
QWidget *QAbstractFormBuilder::createWidget(const QString &widgetName, QWidget *parentWidget, const QString &name)
\internal
[static protected]
const DomResourcePixmap *QAbstractFormBuilder::domPixmap(const DomProperty *p)
\internal
Return the appropriate DOM pixmap for an image dom property. From 4.4 - unused
QString QAbstractFormBuilder::errorString() const
Returns a human-readable description of the last error occurred in load().
\since
5.0
See also load().
[protected]
void QAbstractFormBuilder::initialize(const DomUI *ui)
\internal
Retrieve relevant information from the custom widgets section. Called by create(DomUI *, QWidget *); call manually if you just use create(DomWidget *, QWidget *) on some child widget of DomUI.
[virtual protected]
void QAbstractFormBuilder::layoutInfo(DomLayout *ui_layout, QObject *parent, int *margin, int *spacing)
\internal
[virtual]
QWidget *QAbstractFormBuilder::load(QIODevice *device, QWidget *parent = nullptr)
Loads an XML representation of a widget from the given device, and constructs a new widget with the specified parent.
See also save() and errorString().
[protected]
void QAbstractFormBuilder::loadButtonExtraInfo(const DomWidget *ui_widget, QAbstractButton *button, QWidget *parentWidget)
\internal
\since
4.5
[protected]
void QAbstractFormBuilder::loadComboBoxExtraInfo(DomWidget *ui_widget, QComboBox *comboBox, QWidget *parentWidget)
\internal
[virtual protected]
void QAbstractFormBuilder::loadExtraInfo(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget)
\internal
[protected]
void QAbstractFormBuilder::loadItemViewExtraInfo(DomWidget *ui_widget, QAbstractItemView *itemView, QWidget *parentWidget)
\internal
\since
4.5
[protected]
void QAbstractFormBuilder::loadListWidgetExtraInfo(DomWidget *ui_widget, QListWidget *listWidget, QWidget *parentWidget)
\internal
[protected]
void QAbstractFormBuilder::loadTableWidgetExtraInfo(DomWidget *ui_widget, QTableWidget *tableWidget, QWidget *parentWidget)
\internal
[protected]
void QAbstractFormBuilder::loadTreeWidgetExtraInfo(DomWidget *ui_widget, QTreeWidget *treeWidget, QWidget *parentWidget)
\internal
[static protected]
DomPropertyHash QAbstractFormBuilder::propertyMap(const QList<DomProperty *> &properties)
\internal
[protected]
void QAbstractFormBuilder::reset()
\internal
[protected]
QResourceBuilder *QAbstractFormBuilder::resourceBuilder() const
\internal
\since
4.4
See also setResourceBuilder().
[virtual]
void QAbstractFormBuilder::save(QIODevice *device, QWidget *widget)
Saves an XML representation of the given widget to the specified device in the standard UI file format.
Note: Unlike when saving a form in Qt Designer, all property values are written. This is because, the state of whether a property value was modified or not isn't stored in the Qt property system. The widget that is being saved, could have been created dynamically, not loaded via load(), so in this case the form builder isn't aware of the list of changed properties. Also, there's no generic way to do this for widgets that were created dynamically.
Therefore, you should remove properties that are not required from your resulting XML files, before loading them. Alternatively, if you already know which properties you want to save when you call this method, you can overload computeProperties()
and return a filtered list of required properties. Otherwise, unexpected behavior may occur as some of these properties may depend on each other.
See also load().
[protected]
void QAbstractFormBuilder::saveButtonExtraInfo(const QAbstractButton *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget)
\internal
\since
4.5
[protected]
DomButtonGroups *QAbstractFormBuilder::saveButtonGroups(const QWidget *mainContainer)
\internal
\since
4.5
[protected]
DomColorGroup *QAbstractFormBuilder::saveColorGroup(const QPalette &palette)
\internal
[protected]
void QAbstractFormBuilder::saveComboBoxExtraInfo(QComboBox *comboBox, DomWidget *ui_widget, DomWidget *ui_parentWidget)
\internal
[virtual protected]
DomConnections *QAbstractFormBuilder::saveConnections()
\internal
[virtual protected]
DomCustomWidgets *QAbstractFormBuilder::saveCustomWidgets()
\internal
[virtual protected]
void QAbstractFormBuilder::saveDom(DomUI *ui, QWidget *widget)
\internal
[virtual protected]
void QAbstractFormBuilder::saveExtraInfo(QWidget *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget)
\internal
[protected]
void QAbstractFormBuilder::saveItemViewExtraInfo(const QAbstractItemView *itemView, DomWidget *ui_widget, DomWidget *ui_parentWidget)
\internal
\since
4.5
[protected]
void QAbstractFormBuilder::saveListWidgetExtraInfo(QListWidget *listWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget)
\internal
[protected]
DomProperty *QAbstractFormBuilder::saveResource(const QVariant &v) const
\internal
\since
4.4
[virtual protected]
DomResources *QAbstractFormBuilder::saveResources()
\internal
[virtual protected]
DomTabStops *QAbstractFormBuilder::saveTabStops()
\internal
[protected]
void QAbstractFormBuilder::saveTableWidgetExtraInfo(QTableWidget *tableWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget)
\internal
[protected]
DomProperty *QAbstractFormBuilder::saveText(const QString &attributeName, const QVariant &v) const
\internal
\since
4.5
[protected]
void QAbstractFormBuilder::saveTreeWidgetExtraInfo(QTreeWidget *treeWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget)
\internal
[protected]
void QAbstractFormBuilder::setIconProperty(DomProperty &p, const int &ip) const
\internal
Set up a DOM property with icon.
[protected]
void QAbstractFormBuilder::setPixmapProperty(DomProperty &p, const int &ip) const
\internal
Set up a DOM property with pixmap.
[protected]
void QAbstractFormBuilder::setResourceBuilder(QResourceBuilder *builder)
\internal
\since
4.4
See also resourceBuilder().
[protected]
void QAbstractFormBuilder::setTextBuilder(QTextBuilder *builder)
\internal
\since
4.5
See also textBuilder().
void QAbstractFormBuilder::setWorkingDirectory(const QDir &directory)
Sets the current working directory of the form builder to the specified directory.
See also workingDirectory().
[protected]
QBrush QAbstractFormBuilder::setupBrush(DomBrush *brush)
\internal
[protected]
void QAbstractFormBuilder::setupColorGroup(QPalette &palette, QPalette::ColorGroup colorGroup, DomColorGroup *group)
\internal
[protected]
QTextBuilder *QAbstractFormBuilder::textBuilder() const
\internal
\since
4.5
See also setTextBuilder().
[static protected]
QString QAbstractFormBuilder::toString(const DomString *str)
\internal
[protected]
QVariant QAbstractFormBuilder::toVariant(const QMetaObject *meta, DomProperty *p)
\internal
[static protected]
QMetaEnum QAbstractFormBuilder::toolBarAreaMetaEnum()
\internal
Access meta enumeration for Qt::ToolBarArea
QDir QAbstractFormBuilder::workingDirectory() const
Returns the current working directory of the form builder.
See also setWorkingDirectory().