本页内容

QAbstractFormBuilder Class

QAbstractFormBuilder 类为在运行时创建用户界面的类提供了默认实现。更多内容...

头文件: #include <QAbstractFormBuilder>
CMake: find_package(Qt6 REQUIRED COMPONENTS Designer)
target_link_libraries(mytarget PRIVATE Qt6::Designer)
qmake: QT += designer
由以下项继承:

QFormBuilder

公共函数

QAbstractFormBuilder()
QAbstractFormBuilder(const QAbstractFormBuilder &)
QAbstractFormBuilder(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
QAbstractFormBuilder &operator=(QAbstractFormBuilder &&)
QAbstractFormBuilder &operator=(const QAbstractFormBuilder &)

详细描述

QAbstractFormBuilder 为从用户界面文件构建表单提供了标准接口和默认实现。它不适用于直接实例化。请使用QFormBuilder 类在运行时从UI文件创建用户界面。例如:

        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);
        }

若要重写表单构建器的某些行为,请继承 QAbstractFormBuilder 并重新实现相关的虚函数:

  • load() 负责从任意的 QIODevices 读取 UI 格式文件,并根据其中包含的 XML 数据构建小部件。
  • save() 负责将控件详细信息以 UI 格式保存到任意 QIODevices 中。
  • workingDirectory() 和setWorkingDirectory() 控制表单的存储目录。表单生成器会根据该目录作为基准,沿相对路径查找其他资源。

QFormBuilder 类通常由自定义组件以及嵌入Qt Widgets Designer 的应用程序使用。需要在运行时动态生成用户界面的独立应用程序则使用QUiLoader ,该类位于 Qt UI Tools 模块中。

另请参阅 Qt UI Tools。

成员函数文档

QAbstractFormBuilder::QAbstractFormBuilder()

创建一个新的表单生成器。

[delete] QAbstractFormBuilder::QAbstractFormBuilder(const QAbstractFormBuilder &)

复制并构造一个QAbstractFormBuilder 实例。该函数已被删除。

[delete] QAbstractFormBuilder::QAbstractFormBuilder(QAbstractFormBuilder &&)

通过移动构造一个QAbstractFormBuilder 的实例。该函数已被删除。

[virtual noexcept] QAbstractFormBuilder::~QAbstractFormBuilder()

销毁表单生成器。

QString QAbstractFormBuilder::errorString() const

返回load() 中发生的最后一个错误的易于理解的描述。

另请参阅 load()。

[virtual] QWidget *QAbstractFormBuilder::load(QIODevice *device, QWidget *parent = nullptr)

从给定的device 加载小部件的 XML 表示形式,并使用指定的parent 构建一个新的小部件。

另请参阅 save() 和errorString()。

[virtual] void QAbstractFormBuilder::save(QIODevice *device, QWidget *widget)

将给定的widget 以标准UI文件格式保存为XML表示形式,并保存在指定的device 中。

注意:与 在Qt Widgets Designer 中保存表单不同, 此操作会写入所有属性值。这是因为,属性值是否被修改的状态不会存储在Qt属性系统中。 正在被保存的小部件可能是动态创建的,而非通过load() 加载的,因此在此情况下,表单构建器无法识别已更改属性的列表。此外,对于动态创建的小部件,目前尚无通用的处理方式。

因此,在加载生成的 XML 文件之前,您应从中移除非必需的属性。或者,如果您在调用此方法时已知需要保存哪些属性,可以重载 `computeProperties() ` 并返回经过筛选的必需属性列表。否则,由于某些属性之间可能存在依赖关系,可能会导致意外行为。

另请参阅 load()。

void QAbstractFormBuilder::setWorkingDirectory(const QDir &directory)

将表单构建器的当前工作目录设置为指定的directory 。

另请参阅 workingDirectory()。

QDir QAbstractFormBuilder::workingDirectory() const

返回表单构建器的当前工作目录。

另请参阅 setWorkingDirectory()。

[delete] QAbstractFormBuilder &QAbstractFormBuilder::operator=(QAbstractFormBuilder &&)

将other 按移动赋值方式赋值给此QAbstractFormBuilder 实例。此函数已被删除。

[delete] QAbstractFormBuilder &QAbstractFormBuilder::operator=(const QAbstractFormBuilder &)

将other 复制并赋值给此QAbstractFormBuilder 实例。该函数已被删除。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.