PySide6.QtWidgets.QFormLayout¶
- class QFormLayout¶
QFormLayout类管理输入小部件及其相关标签的表单。More_…概要¶
属性¶
fieldGrowthPolicyᅟ- 表单字段增长的方式formAlignmentᅟ- 表单布局内容在布局几何中的对齐方式horizontalSpacingᅟ- 并排布局的小部件之间的间距labelAlignmentᅟ- 标签的水平对齐方式rowWrapPolicyᅟ- 表单行的换行方式verticalSpacingᅟ- 垂直布局的小部件之间的间距
方法¶
def
__init__()def
addRow()def
formAlignment()def
insertRow()def
isRowVisible()def
itemAt()def
labelAlignment()def
labelForField()def
removeRow()def
rowCount()def
rowWrapPolicy()def
setItem()def
setLayout()def
setRowVisible()def
setWidget()def
takeRow()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
QFormLayout是一个方便的布局类,它以两列形式排列其子元素。左列由标签组成,右列由“字段”小部件(行编辑器、旋转框等)组成。传统上,这种两列表单布局是使用
QGridLayout实现的。QFormLayout是一个更高级的替代方案,它提供了以下优势:遵守不同平台的外观和感觉指南。
例如,macOS Aqua 和 KDE 指南规定标签应右对齐,而 Windows 和 GNOME 应用程序通常使用左对齐。
支持换行长行。
对于小屏幕设备,
QFormLayout可以设置为wrap long rows,甚至可以设置为wrap all rows。Convenient API for creating label–field pairs.
The
addRow()overload that takes a QString and aQWidget* creates aQLabelbehind the scenes and automatically set up its buddy. We can then write code like this:formLayout = QFormLayout(self) formLayout.addRow(tr("Name:"), nameLineEdit) formLayout.addRow(tr("Email:"), emailLineEdit) formLayout.addRow(tr("Age:"), ageSpinBox)
Compare this with the following code, written using
QGridLayout:gridLayout = QGridLayout(self) nameLabel = QLabel(tr("Name:")) nameLabel.setBuddy(nameLineEdit) emailLabel = QLabel(tr("Name:")) emailLabel.setBuddy(emailLineEdit) ageLabel = 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)QMacStyle
QPlastiqueStyle
Qt 扩展样式




传统风格用于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)
- class FieldGrowthPolicy¶
此枚举指定了可用于控制表单字段增长方式的不同策略。
常量
描述
QFormLayout.FieldsStayAtSizeHint
字段永远不会超过它们的
有效 大小 提示。这是QMacStyle的默认设置。QFormLayout.ExpandingFieldsGrow
具有水平
size policy为Expanding或MinimumExpanding的字段将增长以填充可用空间。其他字段不会增长超过其有效大小提示。这是Plastique的默认策略。QFormLayout.AllNonFixedFieldsGrow
所有具有允许它们增长的大小策略的字段将增长以填充可用空间。这是大多数样式的默认策略。
另请参阅
- class RowWrapPolicy¶
此枚举指定了可用于控制表单行换行方式的不同策略。
常量
描述
QFormLayout.DontWrapRows
字段总是放置在其标签旁边。这是除Qt Extended样式之外的所有样式的默认策略。
QFormLayout.WrapLongRows
标签被赋予足够的水平空间以适应最宽的标签,其余的空间被赋予字段。如果字段对的最小宽度比可用空间宽,则字段将换行到下一行。这是Qt Extended样式的默认策略。
QFormLayout.WrapAllRows
字段总是布置在它们的标签下方。
另请参阅
- class ItemRole¶
此枚举指定可能出现在一行中的小部件(或其他布局项)的类型。
常量
描述
QFormLayout.LabelRole
一个标签小部件。
QFormLayout.FieldRole
一个字段小部件。
QFormLayout.SpanningRole
一个跨越标签和字段列的小部件。
注意
当使用
from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。- property fieldGrowthPolicyᅟ: QFormLayout.FieldGrowthPolicy¶
此属性决定了表单字段的增长方式。
默认值取决于小部件或应用程序样式。对于QMacStyle,默认值为
FieldsStayAtSizeHint;对于QCommonStyle派生的样式(如Plastique和Windows),默认值为ExpandingFieldsGrow;对于Qt Extended样式,默认值为AllNonFixedFieldsGrow。如果没有字段可以增长并且表单被调整大小,额外的空间将根据当前的
form alignment进行分配。- Access functions:
- property formAlignmentᅟ: Combination of Qt.AlignmentFlag¶
此属性保存表单布局内容在布局几何中的对齐方式。
默认值取决于小部件或应用程序样式。对于QMacStyle,默认值为Qt::AlignHCenter | Qt::AlignTop;对于其他样式,默认值为Qt::AlignLeft | Qt::AlignTop。
- Access functions:
- property horizontalSpacingᅟ: int¶
此属性保存并排布局的小部件之间的间距。
默认情况下,如果没有显式设置值,布局的水平间距将从父布局继承,或从父小部件的样式设置中继承。
- Access functions:
- property labelAlignmentᅟ: Combination of Qt.AlignmentFlag¶
此属性保存标签的水平对齐方式。
默认值取决于小部件或应用程序样式。对于
QCommonStyle派生的样式,除了QPlastiqueStyle,默认是Qt::AlignLeft;对于其他样式,默认是Qt::AlignRight。另请参阅
- Access functions:
- property rowWrapPolicyᅟ: QFormLayout.RowWrapPolicy¶
此属性决定了表单行的换行方式。
默认值取决于小部件或应用程序样式。对于Qt Extended样式,默认值为
WrapLongRows;对于其他样式,默认值为DontWrapRows。如果您想在每个相关字段上方显示其标签(而不是在旁边),请将此属性设置为
WrapAllRows。另请参阅
- Access functions:
- property verticalSpacingᅟ: int¶
此属性保存垂直布局的小部件之间的间距。
默认情况下,如果没有显式设置值,布局的垂直间距将从父布局继承,或从父小部件的样式设置中继承。
- Access functions:
使用给定的
parent小部件构造一个新的表单布局。布局直接设置为
parent的顶级布局。一个部件只能有一个顶级布局。它由layout()返回。另请参阅
这是一个重载函数。
在此表单布局的末尾添加指定的
layout。该layout跨越两列。- addRow(widget)
- Parameters:
widget –
QWidget
这是一个重载函数。
在此表单布局的末尾添加指定的
widget。widget跨越两列。这是一个重载函数。
在此表单布局的底部添加一个新行,使用给定的
label和field。另请参阅
- addRow(labelText, field)
- Parameters:
labelText – str
field –
QLayout
这是一个重载函数。
此重载会自动在后台创建一个带有
labelText作为其文本的QLabel。- addRow(labelText, field)
- Parameters:
labelText – str
field –
QWidget
这是一个重载函数。
此重载会自动在后台创建一个带有
labelText作为其文本的QLabel。将field设置为新QLabel的buddy。- fieldGrowthPolicy()¶
- Return type:
属性
fieldGrowthPolicyᅟ的获取器。- formAlignment()¶
- Return type:
AlignmentFlag的组合
另请参阅
属性
formAlignmentᅟ的获取器。- getItemPosition(index)¶
- Parameters:
索引 – int
- Return type:
PyObject
检索指定
index处的行和角色(列)。如果index超出范围,*``rowPtr`` 被设置为 -1;否则,行存储在 *``rowPtr`` 中,角色存储在 *``rolePtr`` 中。另请参阅
检索指定子项
layout的行和角色(列)。如果layout不在表单布局中,*``rowPtr``设置为-1;否则,行存储在*``rowPtr``中,角色存储在*``rolePtr``中。检索指定
widget在布局中的行和角色(列)。如果widget不在布局中,*``rowPtr`` 被设置为 -1;否则,行存储在 *``rowPtr`` 中,角色存储在 *``rolePtr`` 中。- horizontalSpacing()¶
- Return type:
整数
属性
horizontalSpacingᅟ的获取器。这是一个重载函数。
在此表单布局的
row位置插入指定的layout。layout跨越两列。如果row超出范围,则小部件将添加在末尾。- insertRow(row, widget)
- Parameters:
row – int
widget –
QWidget
这是一个重载函数。
在此表单布局的
row位置插入指定的widget。widget将跨越两列。如果row超出范围,则小部件将添加在末尾。这是一个重载函数。
在此表单布局中的位置
row插入一个新行,使用给定的label和field。如果row超出范围,新行将添加在末尾。另请参阅
- insertRow(row, labelText, field)
- Parameters:
row – int
labelText – str
field –
QLayout
这是一个重载函数。
此重载会自动在后台创建一个带有
labelText作为其文本的QLabel。- insertRow(row, labelText, field)
- Parameters:
row – int
labelText – str
field –
QWidget
这是一个重载函数。
此重载会自动在后台创建一个带有
labelText作为其文本的QLabel。将field设置为新QLabel的buddy。这是一个重载函数。
如果与
layout对应的行中的某些项目可见,则返回true,否则返回false。- isRowVisible(widget)
- Parameters:
widget –
QWidget- Return type:
布尔
这是一个重载函数。
如果与
widget对应的行中的某些项目可见,则返回true,否则返回false。- isRowVisible(row)
- Parameters:
行 – 整数
- Return type:
布尔
如果行
row中的某些项目可见,则返回 true,否则返回 false。返回给定
row中具有指定role(列)的布局项。如果没有这样的项,则返回None。- labelAlignment()¶
- Return type:
AlignmentFlag的组合
另请参阅
属性
labelAlignmentᅟ的获取器。这是一个重载函数。
返回与给定
field关联的标签。另请参阅
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
这是一个重载函数。
从该表单布局中删除与
layout对应的行。在此调用之后,
rowCount()减少一。所有占据该行的部件和嵌套布局都将被删除。这包括字段部件和标签(如果有的话)。所有后续的行将向上移动一行,释放的垂直空间将在剩余的行中重新分配。你可以使用这个函数来撤销之前的
addRow()或insertRow()操作:flay = ... vbl = QVBoxLayout() flay.insertRow(2, "User:", vbl) # later: flay.removeRow(layout) # vbl == None at this point
如果你想从表单布局中移除行而不删除已插入的布局,请使用
takeRow()代替。另请参阅
- removeRow(widget)
- Parameters:
widget –
QWidget
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
这是一个重载函数。
从该表单布局中删除与
widget对应的行。在此调用之后,
rowCount()减少一。所有占据该行的部件和嵌套布局都将被删除。这包括字段部件和标签(如果有的话)。所有后续行将上移一行,释放的垂直空间将在剩余行之间重新分配。你可以使用这个函数来撤销之前的
addRow()或insertRow()操作:flay = ... le = QLineEdit() flay.insertRow(2, "User:", le) # later: flay.removeRow(le) # le == None at this point
如果你想从布局中移除行而不删除小部件,请使用
takeRow()代替。另请参阅
- removeRow(row)
- Parameters:
行 – 整数
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
从该表单布局中删除行
row。row必须是非负数且小于rowCount()。在此调用之后,
rowCount()的值减一。所有占据该行的部件和嵌套布局都将被删除。这包括字段部件和标签(如果有的话)。所有后续的行将向上移动一行,释放的垂直空间将在剩余的行中重新分配。你可以使用这个函数来撤销之前的
addRow()或insertRow()操作:flay = ... le = QLineEdit() flay.insertRow(2, "User:", le) # later: flay.removeRow(2) # le == None at this point
如果你想从布局中移除行而不删除小部件,请使用
takeRow()代替。另请参阅
- rowCount()¶
- Return type:
整数
返回表单中的行数。
另请参阅
- rowWrapPolicy()¶
- Return type:
另请参阅
属性
rowWrapPolicyᅟ的获取器。- setFieldGrowthPolicy(policy)¶
- Parameters:
策略 –
FieldGrowthPolicy
另请参阅
属性
fieldGrowthPolicyᅟ的设置器。- setFormAlignment(alignment)¶
- Parameters:
alignment –
AlignmentFlag的组合
另请参阅
属性
formAlignmentᅟ的设置器。- setHorizontalSpacing(spacing)¶
- Parameters:
间距 – int
另请参阅
属性
horizontalSpacingᅟ的设置器。- setItem(row, role, item)¶
- Parameters:
row – int
角色 –
ItemRole项目 –
QLayoutItem
将给定
row中的项目设置为给定role的item,必要时用空行扩展布局。如果单元格已经被占用,
item不会被插入,并且会向控制台发送一条错误消息。item跨越两列。- setLabelAlignment(alignment)¶
- Parameters:
alignment –
AlignmentFlag的组合
另请参阅
属性
labelAlignmentᅟ的设置器。将给定
row中的子布局设置为给定role的layout,必要时用空行扩展表单布局。如果单元格已被占用,
layout不会被插入,并且会向控制台发送一条错误消息。这是一个重载函数。
如果
on为真,则显示与layout对应的行,否则隐藏该行。另请参阅
- setRowVisible(widget, on)
- Parameters:
widget –
QWidgeton – 布尔值
这是一个重载函数。
如果
on为真,则显示与widget对应的行,否则隐藏该行。另请参阅
- setRowVisible(row, on)
- Parameters:
row – int
on – 布尔值
如果
on为真,则显示行row,否则隐藏该行。row必须是非负数且小于rowCount()。- setRowWrapPolicy(policy)¶
- Parameters:
策略 –
RowWrapPolicy
另请参阅
属性
rowWrapPolicyᅟ的设置器。- setVerticalSpacing(spacing)¶
- Parameters:
间距 – int
另请参阅
属性
verticalSpacingᅟ的设置器。将给定
row中的小部件设置为给定role的widget,必要时用空行扩展布局。如果单元格已被占用,
widget不会被插入,并且会向控制台发送一条错误消息。警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
这是一个重载函数。
从该表单布局中移除指定的
layout。注意
此函数不会删除任何内容。
在此调用之后,
rowCount()减少一。所有后续行向上移动一行,释放的垂直空间在剩余行之间重新分配。flay = ... vbl = QVBoxLayout() flay.insertRow(2, "User:", vbl) # later: QFormLayout.TakeRowResult result = flay.takeRow(widget)
如果你想从表单布局中移除行并删除插入的布局,请使用
removeRow()代替。返回一个包含小部件和相应标签布局项的结构
另请参阅
- takeRow(widget)
- Parameters:
widget –
QWidget- Return type:
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
这是一个重载函数。
从该表单布局中移除指定的
widget。注意
此函数不会删除任何内容。
在此调用之后,
rowCount()减少一。所有后续行向上移动一行,释放的垂直空间在剩余行之间重新分配。flay = ... le = QLineEdit() flay.insertRow(2, "User:", le) # later: QFormLayout.TakeRowResult result = flay.takeRow(widget)
如果你想从布局中移除行并删除小部件,请使用
removeRow()代替。返回一个包含小部件和相应标签布局项的结构
另请参阅
- takeRow(row)
- Parameters:
行 – 整数
- Return type:
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
从该表单布局中移除指定的
row。row必须是非负数且小于rowCount()。注意
此函数不会删除任何内容。
在此调用之后,
rowCount()减少一。所有后续行向上移动一行,释放的垂直空间在剩余行之间重新分配。你可以使用这个函数来撤销之前的
addRow()或insertRow()操作:flay = ... le = QLineEdit() flay.insertRow(2, "User:", le) # later: QFormLayout.TakeRowResult result = flay.takeRow(2)
如果你想从布局中移除行并删除小部件,请使用
removeRow()代替。返回一个包含小部件和相应标签布局项的结构
另请参阅
- verticalSpacing()¶
- Return type:
整数
另请参阅
属性
verticalSpacingᅟ的获取器。- class TakeRowResult¶
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
- PySide6.QtWidgets.QFormLayout.TakeRowResult.labelItem¶
- PySide6.QtWidgets.QFormLayout.TakeRowResult.fieldItem¶