QFormLayout 类

QFormLayout 类管理输入小部件及其相关标签的表单。 更多...

头文件 #include <QFormLayout>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承自 QLayout

公共类型

structTakeRowResult
enumFieldGrowthPolicy { FieldsStayAtSizeHint, ExpandingFieldsGrow, AllNonFixedFieldsGrow }
enumItemRole { LabelRole, FieldRole, SpanningRole }
enumRowWrapPolicy { DontWrapRows, WrapLongRows, WrapAllRows }

属性

公共函数

QFormLayout(QWidget *parent = nullptr)
virtual~QFormLayout()
voidaddRow(QWidget *label, QWidget *field)
voidaddRow(QWidget *label, QLayout *field)
voidaddRow(const QString &labelText, QWidget *field)
voidaddRow(const QString &labelText, QLayout *field)
voidaddRow(QWidget *widget)
voidaddRow(QLayout *layout)
QFormLayout::FieldGrowthPolicyfieldGrowthPolicy() const
Qt::AlignmentformAlignment() const
voidgetItemPosition(int index, int *rowPtr, QFormLayout::ItemRole *rolePtr) const
voidgetLayoutPosition(QLayout *layout, int *rowPtr, QFormLayout::ItemRole *rolePtr) const
voidgetWidgetPosition(QWidget *widget, int *rowPtr, QFormLayout::ItemRole *rolePtr) const
inthorizontalSpacing() const
voidinsertRow(int row, QWidget *label, QWidget *field)
voidinsertRow(int row, QWidget *label, QLayout *field)
voidinsertRow(int row, const QString &labelText, QWidget *field)
voidinsertRow(int row, const QString &labelText, QLayout *field)
voidinsertRow(introw, QWidget *widget
voidinsertRow(introw, QLayout *layout
(since 6.4) boolisRowVisible(introw) const
(since 6.4) boolisRowVisible(QWidget *widget) const
(since 6.4) boolisRowVisible(QLayout *layout) const
QLayoutItem *itemAt(introw, QFormLayout::ItemRolerole) const
Qt::AlignmentlabelAlignment() const
QWidget *labelForField(QWidget *field) const
QWidget *labelForField(QLayout *field) const
voidremoveRow(introw
voidremoveRow(QWidget *widget
voidremoveRow(QLayout *layout
introwCount() const
QFormLayout::RowWrapPolicyrowWrapPolicy() const
voidsetFieldGrowthPolicy(QFormLayout::FieldGrowthPolicy policy
voidsetFormAlignment(Qt::Alignment alignment
voidsetHorizontalSpacing(intspacing
voidsetItem(introw, QFormLayout::ItemRolerole, QLayoutItem *item
voidsetLabelAlignment(Qt::Alignmentalignment
voidsetLayout(introw, QFormLayout::ItemRolerole, QLayout *layout
(since 6.4) voidsetRowVisible(introw, boolon
(since 6.4) voidsetRowVisible(QWidget *widget, boolon
(since 6.4) voidsetRowVisible(QLayout *layout, boolon
voidsetRowWrapPolicy(QFormLayout::RowWrapPolicypolicy
voidsetVerticalSpacing(intspacing
voidsetWidget(introw, QFormLayout::ItemRolerole, QWidget *widget
QFormLayout::TakeRowResulttakeRow(introw
QFormLayout::TakeRowResulttakeRow(QWidget *widget
QFormLayout::TakeRowResulttakeRow(QLayout *layout
intverticalSpacing() const

重写的公共函数

virtual voidaddItem(QLayoutItem *item) override
virtual intcount() const override
virtual Qt::OrientationsexpandingDirections() const override
virtual boolhasHeightForWidth() const override
virtual intheightForWidth(intwidth) const override
virtual voidinvalidate() override
virtual QLayoutItem *itemAt(intindex) const override
virtual QSizeminimumSize() const override
virtual voidsetGeometry(const QRect &rect) override
virtual voidsetSpacing(intspacing) override
virtual QSizesizeHint() const override
virtual intspacing() const override
virtual QLayoutItem *takeAt(intindex) override

详细描述

QFormLayout是一个便捷的布局类,可以将子项布局为一个两列表单。左侧列包含标签,右侧列包含“字段”小部件(行编辑器、微调框等)。

传统上,这样的两列表单布局是通过使用QGridLayout来实现的。QFormLayout是一个更高级别的替代方案,具有以下优点:

  • 符合不同平台的视觉风格指南。

    例如,macOS Aqua和KDE指南指出,标签应该是右对齐的,而Windows和GNOME应用程序通常使用左对齐。

  • 支持长行换行。

    对于显示屏幕较小的设备,可以将QFormLayout设置为换行长行,甚至换行所有行

  • 创建标签-字段对的方便API。

    addRow()的重载函数接受一个QString和一个QWidget *,在幕后创建一个QLabel并自动设置其伙伴。然后我们可以编写如下代码

    QFormLayout *formLayout = new QFormLayout(this);
    formLayout->addRow(tr("&Name:"), nameLineEdit);
    formLayout->addRow(tr("&Email:"), emailLineEdit);
    formLayout->addRow(tr("&Age:"), ageSpinBox);

    将之与以下代码进行比较,该代码使用QGridLayout编写

    QGridLayout *gridLayout = new QGridLayout(this);
    
    nameLabel = new QLabel(tr("&Name:"));
    nameLabel->setBuddy(nameLineEdit);
    
    emailLabel = new QLabel(tr("&Name:"));
    emailLabel->setBuddy(emailLineEdit);
    
    ageLabel = new QLabel(tr("&Name:"));
    ageLabel->setBuddy(ageSpinBox);
    
    gridLayout->addWidget(nameLabel, 0, 0);
    gridLayout->addWidget(nameLineEdit, 0, 1);
    gridLayout->addWidget(emailLabel, 1, 0);
    gridLayout->addWidget(emailLineEdit, 1, 1);
    gridLayout->addWidget(ageLabel, 2, 0);
    gridLayout->addWidget(ageSpinBox, 2, 1);

下表显示了不同风格下的默认外观。

QCommonStyle派生风格(除QPlastiqueStyle外)QMacStyleQPlastiqueStyleQt Extended风格
用于Windows、GNOME和KDE早期版本的旧传统风格。标签左对齐,扩展字段扩展到可用空间。(这通常相当于使用两列QGridLayout。)基于macOS Aqua指南的风格。标签右对齐,字段不会超出其大小提示,表单水平居中。适用于KDE应用程序的推荐风格。类似于MacStyle,不同之处在于表单左对齐,所有字段扩展到可用空间。Qt Extended风格的默认风格。标签右对齐,扩展字段扩展到可用空间,并为长行启用了行换行。

可以通过调用setLabelAlignment()、setFormAlignment()、setFieldGrowthPolicy()和setRowWrapPolicy()来个别覆盖表单样式。例如,要模拟所有平台上的QMacStyle表单布局外观,但标签左对齐,可以编写以下代码

formLayout->setRowWrapPolicy(QFormLayout::DontWrapRows);
formLayout->setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint);
formLayout->setFormAlignment(Qt::AlignHCenter | Qt::AlignTop);
formLayout->setLabelAlignment(Qt::AlignLeft);

另请参阅QGridLayoutQBoxLayoutQStackedLayout

成员类型文档

枚举QFormLayout::FieldGrowthPolicy

该枚举指定了可以用于控制表单字段增长方式的不同策略。

常数描述
QFormLayout::FieldsStayAtSizeHint0字段从不超出它们的有效大小提示。这是QMacStyle的默认设置。
QFormLayout::ExpandingFieldsGrow1具有水平大小策略ExpandingMinimumExpanding的字段将扩展以填满可用空间。其他字段不会超出其有效大小提示。这是Plastique的默认策略。
QFormLayout::AllNonFixedFieldsGrow2所有允许生长的大小政策的字段都将扩展以填满可用空间。这是大多数风格的默认策略。

另请参阅 fieldGrowthPolicy

枚举 QFormLayout::ItemRole

这个枚举指定了可能出现在行中的小部件(或其他布局项)的类型。

常数描述
QFormLayout::LabelRole0一个标签小部件。
QFormLayout::FieldRole1一个字段小部件。
QFormLayout::SpanningRole2一个跨越标签和字段列的小部件。

另请参阅 itemAt() 和 getItemPosition()。

枚举 QFormLayout::RowWrapPolicy

此枚举指定可以用来控制表单行包裹方式的不同策略。

常数描述
QFormLayout::DontWrapRows0字段始终布局在它们的标签旁边。这是除了 Qt Extended 样式之外所有样式的默认策略。
QFormLayout::WrapLongRows1标签被给予足够的水平空间以适应最宽的标签,其余的空间分配给字段。如果字段对的最小大小比可用空间宽,字段将换行。这是 Qt Extended 样式的默认策略。
QFormLayout::WrapAllRows2字段始终布局在标签下方。

另请参阅 rowWrapPolicy

属性文档

fieldGrowthPolicy : FieldGrowthPolicy

此属性用于定义表单字段的增长方式

默认值取决于小部件或应用程序样式。对于 QMacStyle,其默认值为 FieldsStayAtSizeHint;对于 QCommonStyle 派生的样式(如 Plastique 和 Windows),默认值为 ExpandingFieldsGrow;对于 Qt Extended 样式,默认值为 AllNonFixedFieldsGrow

如果没有任何字段可以增长,并且表单大小发生变化,则额外空间将根据当前 表单对齐方式 进行动态分配。

访问函数

QFormLayout::FieldGrowthPolicyfieldGrowthPolicy() const
voidsetFieldGrowthPolicy(QFormLayout::FieldGrowthPolicy policy)

另请参阅 formAlignmentrowWrapPolicy

formAlignment : Qt::Alignment

此属性用于定义表单布局内容的布局在布局几何形状内的对齐方式

默认值取决于小部件或应用程序样式。对于 QMacStyle,其默认值为 Qt::AlignHCenter | Qt::AlignTop;对于其他样式,其默认值为 Qt::AlignLeft | Qt::AlignTop

访问函数

Qt::AlignmentformAlignment() const
voidsetFormAlignment(Qt::Alignment alignment)

另请参阅 labelAlignmentrowWrapPolicy

horizontalSpacing : int

此属性用于定义在水平方向上并排布局的小部件之间的间隔

默认情况下,如果没有显式设置值,布局的水平间隔将从父布局继承,或从父小部件的风格设置中继承。

访问函数

inthorizontalSpacing() const
voidsetHorizontalSpacing(int spacing)

另请参阅verticalSpacingQStyle::pixelMetric()和PM_LayoutHorizontalSpacing

labelAlignment : Qt::Alignment

此属性保存标签的水平对齐方式。

默认值取决于小部件或应用程序风格。对于由QCommonStyle派生的风格(除了QPlastiqueStyle以外),默认值为Qt::AlignLeft;对于其他风格,默认值为Qt::AlignRight

访问函数

Qt::AlignmentlabelAlignment() const
voidsetLabelAlignment(Qt::Alignment alignment)

另请参阅formAlignment

rowWrapPolicy : RowWrapPolicy

此属性保存表单行绕圈的方式。

默认值取决于小部件或应用程序风格。对于Qt Extended风格,默认值为WrapLongRows;对于其他风格,默认值为DontWrapRows

如果您想在每个标签上方显示与其关联的字段(而非旁边),请将此属性设置为WrapAllRows

访问函数

QFormLayout::RowWrapPolicyrowWrapPolicy() const
voidsetRowWrapPolicy(QFormLayout::RowWrapPolicy policy)

另请参阅 fieldGrowthPolicy

verticalSpacing : int

此属性保存垂直布局的小部件之间的间隔。

默认情况下,如果没有明确设置值,布局的垂直间隔从父布局或父小部件的风格设置中继承。

访问函数

intverticalSpacing() const
voidsetVerticalSpacing(int spacing)

另请参阅horizontalSpacingQStyle::pixelMetricPM_LayoutHorizontalSpacing

成员函数文档

[显式] QFormLayout::QFormLayout(QWidget *parent = nullptr)

使用指定的parent小部件构建一个新的表单布局。

布局直接设置为parent的顶层布局。一个小部件只能有一个顶层布局。它由QWidget::layout()返回。

另请参阅QWidget::setLayout

[虚析构 InvalidOperationException] QFormLayout::~QFormLayout()

销毁表单布局。

[重写虚拟] void QFormLayout::addItem(QLayoutItem *item)

重新实现:QLayout::addItem(QLayoutItem *item)。

void QFormLayout::addRow(QWidget *label, QWidget *field)

将带有给定labelfield的新行添加到表单布局的底部。

另请参阅insertRow

void QFormLayout::addRow(QWidget *label, QLayout *field)

这是一个重载函数。

void QFormLayout::addRow(const QString &labelText, QWidget *field)

这是一个重载函数。

此重载函数将在幕后自动创建一个带有文本 labelTextQLabel。将 field 设置为新的 QLabelbuddy

void QFormLayout::addRow(const QString &labelText, QLayout *field)

这是一个重载函数。

此重载函数将在幕后自动创建一个带有文本 labelTextQLabel

void QFormLayout::addRow(QWidget *widget)

这是一个重载函数。

将指定的 widget 添加到表单布局的末尾。该 widget 将跨越两列。

void QFormLayout::addRow(QLayout *layout)

这是一个重载函数。

将指定的 layout 添加到表单布局的末尾。该 layout 将跨越两列。

[继承虚拟] int QFormLayout::count() const

重新实现: QLayout::count() const

[继承虚拟] Qt::Orientations QFormLayout::expandingDirections() const

重新实现: QLayout::expandingDirections() const

void QFormLayout::getItemPosition(int index, int *rowPtr, QFormLayout::ItemRole *rolePtr) const

检索指定 index 的项的行和角色(列)。如果 index 超出范围,则 *rowPtr 设置为 -1;否则行存储在 *rowPtr 中,角色存储在 *rolePtr 中。

另请参阅 itemAt()、count()、getLayoutPosition() 和 getWidgetPosition

void QFormLayout::getLayoutPosition(QLayout *layout, int *rowPtr, QFormLayout::ItemRole *rolePtr) const

检索指定子 layout 的行和角色(列)。如果 layout 不在表单布局中,则 *rowPtr 设置为 -1;否则行存储在 *rowPtr 中,角色存储在 *rolePtr 中。

void QFormLayout::getWidgetPosition(QWidget *widget, int *rowPtr, QFormLayout::ItemRole *rolePtr) const

检索布局中指定 widget 的行和角色(列)。如果 widget 不在布局中,则 *rowPtr 设置为 -1;否则,行存储在 *rowPtr 中,角色存储在 *rolePtr 中。

另请参阅getItemPosition() 和 itemAt

[覆盖虚拟] bool QFormLayout::hasHeightForWidth() const

重新实现:QLayoutItem::hasHeightForWidth() const

[覆盖虚拟] int QFormLayout::heightForWidth(int width) const

重新实现:QLayoutItem::heightForWidth(int) const

void QFormLayout::insertRow(int row, QWidget *label, QWidget *field)

在此表单布局中插入新行,位置为 row,带有指定的 labelfield。如果 row 超出范围,则新行添加到末尾。

另请参阅addRow

void QFormLayout::insertRow(int row, QWidget *label, QLayout *field)

这是一个重载函数。

void QFormLayout::insertRow(int row, const QString &labelText, QWidget *field)

这是一个重载函数。

此重载函数将在幕后自动创建一个带有文本 labelTextQLabel。将 field 设置为新的 QLabelbuddy

void QFormLayout::insertRow(int row, const QString &labelText, QLayout *field)

这是一个重载函数。

此重载函数将在幕后自动创建一个带有文本 labelTextQLabel

void QFormLayout::insertRow(int row, QWidget *widget)

这是一个重载函数。

在此表单布局中插入指定 widget,位置为 row。该 widget 扩展到两个列。如果 row 超出范围,则控件添加到末尾。

void QFormLayout::insertRow(int row, QLayout *layout)

这是一个重载函数。

在此表单布局中插入指定 layout,位置为 row。该 layout 扩展到两个列。如果 row 超出范围,则控件添加到末尾。

[覆盖虚拟] void QFormLayout::invalidate()

重新实现:QLayout::invalidate

[自 6.4 版本以来] bool QFormLayout::isRowVisible(int row) const

如果行的某些项是可见的,则返回 true,否则返回 false。

此函数是在 Qt 6.4 中引入的。

[自6.4起] bool QFormLayout::isRowVisible(QWidget *widget) const

这是一个重载函数。

如果与widget对应的行中的一些条目是可见的,则返回 true,否则返回 false。

此函数是在 Qt 6.4 中引入的。

[自6.4起] bool QFormLayout::isRowVisible(QLayout *layout) const

这是一个重载函数。

如果与layout对应的行中的一些条目是可见的,则返回 true,否则返回 false。

此函数是在 Qt 6.4 中引入的。

QLayoutItem *QFormLayout::itemAt(int row, QFormLayout::ItemRole role) const

返回给定row和指定的role(列)的布局项。如果没有这样的项,则返回 nullptr

另请参阅QLayout::itemAt() 和 setItem()。

[重写虚函数] QLayoutItem *QFormLayout::itemAt(int index) const

重新实现: QLayout::itemAt(int index) const.

QWidget *QFormLayout::labelForField(QWidget *field) const

返回与给定field相关联的标签。

另请参阅itemAt()。

QWidget *QFormLayout::labelForField(QLayout *field) const

这是一个重载函数。

[重写虚函数] QSize QFormLayout::minimumSize() const

重新实现: QLayout::minimumSize() const.

void QFormLayout::removeRow(int row)

从此表单布局中删除行row

row必须是非负数,并且小于rowCount()。

在此调用后,rowCount()减一。此行占用的所有小部件和嵌套布局都将被删除。这包括字段小部件(s)和标签(如果有的话)。所有后续行都将上移一行,释放的垂直空间将在剩余行之间重新分配。

您可以使用此函数撤消之前的addRow() 或 insertRow()。

QFormLayout *flay = ...;
QPointer<QLineEdit> le = new QLineEdit;
flay->insertRow(2, "User:", le);
// later:
flay->removeRow(2); // le == nullptr at this point

如果您想从布局中删除行而不删除小部件,请使用 takeRow()。

另请参阅takeRow()。

void QFormLayout::removeRow(QWidget *widget)

这是一个重载函数。

从此表单布局中删除与widget对应的行。

在此调用后,rowCount()减一。此行占用的所有小部件和嵌套布局都将被删除。这包括字段小部件(s)和标签(如果有的话)。所有后续行都将上移一行,释放的垂直空间将在剩余行之间重新分配。

您可以使用此函数撤消之前的addRow() 或 insertRow()。

QFormLayout *flay = ...;
QPointer<QLineEdit> le = new QLineEdit;
flay->insertRow(2, "User:", le);
// later:
flay->removeRow(le); // le == nullptr at this point

如果您想从布局中删除行而不删除小部件,请使用 takeRow()。

另请参阅takeRow()。

void QFormLayout::removeRow(QLayout *layout)

这是一个重载函数。

从此表单布局中删除与layout对应的行。

在此调用后,rowCount()减一。此行占用的所有小部件和嵌套布局都将被删除。这包括字段小部件(s)和标签(如果有的话)。所有后续行都将上移一行,释放的垂直空间将在剩余行之间重新分配。

您可以使用此函数撤消之前的addRow() 或 insertRow()。

QFormLayout *flay = ...;
QPointer<QVBoxLayout> vbl = new QVBoxLayout;
flay->insertRow(2, "User:", vbl);
// later:
flay->removeRow(layout); // vbl == nullptr at this point

如果你想要从表单布局中删除行而不删除插入的布局,请使用takeRow()方法。

另请参阅takeRow()。

int QFormLayout::rowCount() const

返回表单中的行数。

另请参阅QLayout::count().

[重写虚函数] void QFormLayout::setGeometry(const QRect &rect)

重新实现:QLayout::setGeometry(const QRect &r).

void QFormLayout::setItem(int row, QFormLayout::ItemRole role, QLayoutItem *item)

将给定row和给定role的项设置为item,如果需要,则通过添加空行扩展布局。

如果单元格已被占用,则不插入item,并将错误信息发送到控制台。该item覆盖两列。

警告:不要使用此函数添加子布局或子小部件项。请使用setLayout()或setWidget()代替。

另请参阅setLayout().

void QFormLayout::setLayout(int row, QFormLayout::ItemRole role, QLayout *layout)

将给定row和给定role的子布局设置为layout,如果需要,则通过添加空行扩展表单布局。

如果单元格已被占用,则不插入layout,并将错误信息发送到控制台。

注意:对于大多数应用,应使用addRow()或insertRow()代替setLayout()。

另请参阅setWidget().

[since 6.4] void QFormLayout::setRowVisible(int row, bool on)

如果on为true,则显示行row,否则隐藏该行。

row必须是非负数,并且小于rowCount()。

此函数是在 Qt 6.4 中引入的。

另请参阅isRowVisible()、removeRow()和takeRow().

[since 6.4] void QFormLayout::setRowVisible(QWidget *widget, bool on)

这是一个重载函数。

如果on为true,则显示与widget对应的行,否则隐藏该行。

此函数是在 Qt 6.4 中引入的。

另请参阅removeRow()和takeRow().

[since 6.4] void QFormLayout::setRowVisible(QLayout *layout, bool on)

这是一个重载函数。

如果on为true,则显示与layout对应的行,否则隐藏该行。

此函数是在 Qt 6.4 中引入的。

另请参阅removeRow()和takeRow().

[覆盖虚函数] void QFormLayout::setSpacing(int spacing)

重新实现了属性: QLayout::spacing 的访问函数。

此函数将垂直和水平间隔都设置为 spacing

另请参阅 spacing()、setVerticalSpacing() 和 setHorizontalSpacing()。

void QFormLayout::setWidget(int row, QFormLayout::ItemRole role, QWidget *widget)

设置给定 row 中给定 role 的小部件为 widget,如果需要,通过添加空行扩展布局。

如果单元格已被占用,则不插入 widget 并且向控制台发送错误消息。

注意:对于大多数应用程序,最好使用 addRow() 或 insertRow() 而不是 setWidget()。

另请参阅setLayout().

[覆盖虚函数] QSize QFormLayout::sizeHint() const

重新实现了: QLayoutItem::sizeHint() const

[覆盖虚函数] int QFormLayout::spacing() const

重新实现了属性: QLayout::spacing 的访问函数。

如果垂直间隔等于水平间隔,此函数返回该值;否则返回 -1。

另请参阅 setSpacing()、verticalSpacing() 和 horizontalSpacing()。

[覆盖虚函数] QLayoutItem *QFormLayout::takeAt(int index)

重新实现了: QLayout::takeAt(int index)。

QFormLayout::TakeRowResult QFormLayout::takeRow(int row)

从此表单布局中删除指定的 row

row必须是非负数,并且小于rowCount()。

注意:此函数不删除任何内容。

此调用后,rowCount() 减 1。所有随后的行都向上移动一行,并重新分配释放的垂直空间。

您可以使用此函数撤消之前的addRow() 或 insertRow()。

QFormLayout *flay = ...;
QPointer<QLineEdit> le = new QLineEdit;
flay->insertRow(2, "User:", le);
// later:
QFormLayout::TakeRowResult result = flay->takeRow(2);

如果您想从布局中删除行并删除小部件,请使用 removeRow()。

返回包含小部件及其对应标签布局项的结构体

另请参阅 removeRow()。

QFormLayout::TakeRowResult QFormLayout::takeRow(QWidget *widget)

这是一个重载函数。

从此表单布局中删除指定的 widget

注意:此函数不删除任何内容。

此调用后,rowCount() 减 1。所有随后的行都向上移动一行,并重新分配释放的垂直空间。

QFormLayout *flay = ...;
QPointer<QLineEdit> le = new QLineEdit;
flay->insertRow(2, "User:", le);
// later:
QFormLayout::TakeRowResult result = flay->takeRow(widget);

如果您想从布局中删除行并删除小部件,请使用 removeRow()。

返回包含小部件及其对应标签布局项的结构体

另请参阅 removeRow()。

QFormLayout::TakeRowResult QFormLayout::takeRow(QLayout *layout)

这是一个重载函数。

从此表单布局中删除指定的 layout

注意:此函数不删除任何内容。

此调用后,rowCount() 减 1。所有随后的行都向上移动一行,并重新分配释放的垂直空间。

QFormLayout *flay = ...;
QPointer<QVBoxLayout> vbl = new QVBoxLayout;
flay->insertRow(2, "User:", vbl);
// later:
QFormLayout::TakeRowResult result = flay->takeRow(widget);

如果您想从表单布局中删除行并删除插入的布局,请使用 removeRow()。

返回包含小部件及其对应标签布局项的结构体

另请参阅 removeRow()。

版权所有© 2024 The Qt Company Ltd. 本文档内包含的贡献的文档版权归其所有者所有。本提供文档在自由软件基金会发布的GNU自由文档许可协议版本1.3条款下发布。Qt及其相关标志是The Qt Company Ltd.在芬兰以及 worldwide 的商标。所有其他商标皆为其各自所有者的财产。