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 aQLabel
behind 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 –
QWidget
on – 布尔值
这是一个重载函数。
如果
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¶