QFormBuilder Class

The QFormBuilder class is used to dynamically construct user interfaces from UI files at run-time. More...

Header: #include <QFormBuilder>
Inherits: QAbstractFormBuilder

Public Functions

QFormBuilder()
virtual ~QFormBuilder() override
void addPluginPath(const QString &pluginPath)
void clearPluginPaths()
QList<QDesignerCustomWidgetInterface *> customWidgets() const
QStringList pluginPaths() const
void setPluginPath(const QStringList &pluginPaths)

Protected Functions

virtual void updateCustomWidgets()

Reimplemented Protected Functions

virtual bool addItem(DomLayoutItem *ui_item, QLayoutItem *item, QLayout *layout) override
virtual bool addItem(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget) override
virtual void applyProperties(QObject *o, const QList<DomProperty *> &properties) override
virtual QWidget *create(DomUI *ui, QWidget *parentWidget) override
virtual QWidget *create(DomWidget *ui_widget, QWidget *parentWidget) override
virtual QLayout *create(DomLayout *ui_layout, QLayout *layout, QWidget *parentWidget) override
virtual QLayoutItem *create(DomLayoutItem *ui_layoutItem, QLayout *layout, QWidget *parentWidget) override
virtual QAction *create(DomAction *ui_action, QObject *parent) override
virtual QActionGroup *create(DomActionGroup *ui_action_group, QObject *parent) override
virtual void createConnections(DomConnections *ui_connections, QWidget *widget) override
virtual QLayout *createLayout(const QString &layoutName, QObject *parent, const QString &name) override
virtual QWidget *createWidget(const QString &widgetName, QWidget *parentWidget, const QString &name) override

Static Protected Members

QWidget *widgetByName(QWidget *topLevel, const QString &name)

Detailed Description

\inmoduleQtDesigner

The QFormBuilder class provides a mechanism for dynamically creating user interfaces at run-time, based on UI files created with Qt Designer. 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);
         }

By including the user interface in the example's resources (myForm.qrc), we ensure that it will be present when the example is run:

     <!DOCTYPE RCC><RCC version="1.0">
     <qresource prefix="/forms">
        <file>mywidget.ui</file>
     </qresource>
     </RCC>

QFormBuilder extends the QAbstractFormBuilder base class with a number of functions that are used to support custom widget plugins:

  • pluginPaths() returns the list of paths that the form builder searches when loading custom widget plugins.
  • addPluginPath() allows additional paths to be registered with the form builder.
  • setPluginPath() is used to replace the existing list of paths with a list obtained from some other source.
  • clearPluginPaths() removes all paths registered with the form builder.
  • customWidgets() returns a list of interfaces to plugins that can be used to create new instances of registered custom widgets.

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 class, found in the QtUiTools module.

See also QAbstractFormBuilder and Qt UI Tools.

Member Function Documentation

QFormBuilder::QFormBuilder()

Constructs a new form builder.

[override virtual noexcept] QFormBuilder::~QFormBuilder()

Destroys the form builder.

[override virtual protected] bool QFormBuilder::addItem(DomLayoutItem *ui_item, QLayoutItem *item, QLayout *layout)

Reimplements: QAbstractFormBuilder::addItem(DomLayoutItem *ui_item, QLayoutItem *item, QLayout *layout).

\internal

[override virtual protected] bool QFormBuilder::addItem(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget)

Reimplements: QAbstractFormBuilder::addItem(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget).

\internal

void QFormBuilder::addPluginPath(const QString &pluginPath)

Adds a new plugin path specified by pluginPath to the list of paths that will be searched by the form builder when loading a custom widget plugin.

See also setPluginPath() and clearPluginPaths().

[override virtual protected] void QFormBuilder::applyProperties(QObject *o, const QList<DomProperty *> &properties)

Reimplements: QAbstractFormBuilder::applyProperties(QObject *o, const QList<DomProperty *> &properties).

\internal

void QFormBuilder::clearPluginPaths()

Clears the list of paths that the form builder uses to search for custom widget plugins.

See also pluginPaths().

[override virtual protected] QWidget *QFormBuilder::create(DomUI *ui, QWidget *parentWidget)

Reimplements: QAbstractFormBuilder::create(DomUI *ui, QWidget *parentWidget).

\internal

[override virtual protected] QWidget *QFormBuilder::create(DomWidget *ui_widget, QWidget *parentWidget)

Reimplements: QAbstractFormBuilder::create(DomWidget *ui_widget, QWidget *parentWidget).

\internal

[override virtual protected] QLayout *QFormBuilder::create(DomLayout *ui_layout, QLayout *layout, QWidget *parentWidget)

Reimplements: QAbstractFormBuilder::create(DomLayout *ui_layout, QLayout *parentLayout, QWidget *parentWidget).

\internal

[override virtual protected] QLayoutItem *QFormBuilder::create(DomLayoutItem *ui_layoutItem, QLayout *layout, QWidget *parentWidget)

Reimplements: QAbstractFormBuilder::create(DomLayoutItem *ui_layoutItem, QLayout *layout, QWidget *parentWidget).

\internal

[override virtual protected] QAction *QFormBuilder::create(DomAction *ui_action, QObject *parent)

Reimplements: QAbstractFormBuilder::create(DomAction *ui_action, QObject *parent).

\internal

[override virtual protected] QActionGroup *QFormBuilder::create(DomActionGroup *ui_action_group, QObject *parent)

Reimplements: QAbstractFormBuilder::create(DomActionGroup *ui_action_group, QObject *parent).

\internal

[override virtual protected] void QFormBuilder::createConnections(DomConnections *ui_connections, QWidget *widget)

Reimplements: QAbstractFormBuilder::createConnections(DomConnections *, QWidget *).

\internal

[override virtual protected] QLayout *QFormBuilder::createLayout(const QString &layoutName, QObject *parent, const QString &name)

Reimplements: QAbstractFormBuilder::createLayout(const QString &layoutName, QObject *parent, const QString &name).

\internal

[override virtual protected] QWidget *QFormBuilder::createWidget(const QString &widgetName, QWidget *parentWidget, const QString &name)

Reimplements: QAbstractFormBuilder::createWidget(const QString &widgetName, QWidget *parentWidget, const QString &name).

\internal

QList<QDesignerCustomWidgetInterface *> QFormBuilder::customWidgets() const

Returns a list of the available plugins.

QStringList QFormBuilder::pluginPaths() const

Returns the list of paths the form builder searches for plugins.

See also addPluginPath().

void QFormBuilder::setPluginPath(const QStringList &pluginPaths)

Sets the list of plugin paths to the list specified by pluginPaths.

See also addPluginPath().

[virtual protected] void QFormBuilder::updateCustomWidgets()

\internal

[static protected] QWidget *QFormBuilder::widgetByName(QWidget *topLevel, const QString &name)

\internal