[QtGui module]
该QFormLayout类管理输入部件及其关联的标籤形式。More…
继承QLayout。
Types
enum FieldGrowthPolicy { FieldsStayAtSizeHint, ExpandingFieldsGrow, AllNonFixedFieldsGrow }
enum ItemRole { LabelRole, FieldRole, SpanningRole }
enum RowWrapPolicy { DontWrapRows, WrapLongRows, WrapAllRows }
Methods
__init__ (self, QWidget parent = None)
addItem (self, QLayoutItem item)
addRow (self, QWidget label, QWidget field)
addRow (self, QWidget label, QLayout field)
addRow (self, QString labelText, QWidget field)
addRow (self, QString labelText, QLayout field)
addRow (self, QWidget widget)
addRow (self, QLayout layout)
int count (self)
Qt.Orientations expandingDirections (self)
FieldGrowthPolicy fieldGrowthPolicy (self)
Qt.Alignment formAlignment (self)
(int rowPtr, ItemRole rolePtr) getItemPosition (self, int index)
(int rowPtr, ItemRole rolePtr) getLayoutPosition (self, QLayout layout)
(int rowPtr, ItemRole rolePtr) getWidgetPosition (self, QWidget widget)
bool hasHeightForWidth (self)
int heightForWidth (self, int width)
int horizontalSpacing (self)
insertRow (self, int row, QWidget label, QWidget field)
insertRow (self, int row, QWidget label, QLayout field)
insertRow (self, int row, QString labelText, QWidget field)
insertRow (self, int row, QString labelText, QLayout field)
insertRow (self, int row, QWidget widget)
insertRow (self, int row, QLayout layout)
invalidate (self)
QLayoutItem itemAt (self, int row, ItemRole role)
QLayoutItem itemAt (self, int index)
Qt.Alignment labelAlignment (self)
QWidget labelForField (self, QWidget field)
QWidget labelForField (self, QLayout field)
QSize minimumSize (self)
int rowCount (self)
RowWrapPolicy rowWrapPolicy (self)
setFieldGrowthPolicy (self, FieldGrowthPolicy policy)
setFormAlignment (self, Qt.Alignment alignment)
setGeometry (self, QRect rect)
setHorizontalSpacing (self, int spacing)
setItem (self, int row, ItemRole role, QLayoutItem item)
setLabelAlignment (self, Qt.Alignment alignment)
setLayout (self, int row, ItemRole role, QLayout layout)
setRowWrapPolicy (self, RowWrapPolicy policy)
setSpacing (self, int)
setVerticalSpacing (self, int spacing)
setWidget (self, int row, ItemRole role, QWidget widget)
QSize sizeHint (self)
int spacing (self)
QLayoutItem takeAt (self, int index)
int verticalSpacing (self)
Detailed Description
该QFormLayout类管理输入部件及其关联的标籤形式。
QFormLayout是勾画出它在一个两列的表格孩子一个方便的布局类。左栏包括标籤,右列包含“场”的小部件(行编辑器,旋转框等) 。
传统上,这样的两栏式布局形式采用实现QGridLayout。 QFormLayout是更高级别的替代方案,提供了以下优点:
- Adherence to the different platform’s look and feel guidelines.
例如,本 Mac OS X Aqua和KDE指引指定的标籤应该是右对齐的,而Windows和GNOME应用程序通常使用左对齐。 - Support for wrapping long rows.
对于具有小显示器的设备, QFormLayout可以设置为wrap long rows或什至wrap all rows。 - Convenient API for creating label—field pairs.
该addRow( )重载采用一个QString和QWidget*创建一个QLabel在幕后,并自动设置其为好友。然后,我们可以编写这样的代码:
QFormLayout *formLayout = new QFormLayout;
formLayout->addRow(tr("&Name:"), nameLineEdit);
formLayout->addRow(tr("&Email:"), emailLineEdit);
formLayout->addRow(tr("&Age:"), ageSpinBox);
setLayout(formLayout);
使用下面的代码,写的比较这QGridLayout:
nameLabel = new [QLabel](docs_qlabel.html)(tr("&Name:"));
nameLabel->setBuddy(nameLineEdit);
emailLabel = new [QLabel](docs_qlabel.html)(tr("&Name:"));
emailLabel->setBuddy(emailLineEdit);
ageLabel = new [QLabel](docs_qlabel.html)(tr("&Name:"));
ageLabel->setBuddy(ageSpinBox);
[QGridLayout](docs_qgridlayout.html) *gridLayout = new [QGridLayout](docs_qgridlayout.html);
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);
setLayout(gridLayout);
下表显示了默认的外观在不同的风格。
QCommonStyle derived styles (except QPlastiqueStyle ) |
QMacStyle | QPlastiqueStyle | Qt Extended styles |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Traditional style used for Windows, GNOME, and earlier versions of KDE. Labels are left aligned, and expanding fields grow to fill the available space. (This normally corresponds to what we would get using a two-column QGridLayout .) |
Style based on the Mac OS X Aqua guidelines. Labels are right-aligned, the fields don’t grow beyond their size hint, and the form is horizontally centered. |
Recommended style for KDE applications . Similar to MacStyle, except that the form is left-aligned and all fields grow to fill the available space. |
Default style for Qt Extended styles. Labels are right-aligned, expanding fields grow to fill the available space, and row wrapping is enabled for long lines. |
表格样式可以也可以单独通过调用被重写setLabelAlignment( )setFormAlignment( )setFieldGrowthPolicy()和setRowWrapPolicy( ) 。例如,以模拟的形式布局美观QMacStyle在所有平台上,但左对齐的标籤,你可以这样写:
formLayout->setRowWrapPolicy(QFormLayout.DontWrapRows);
formLayout->setFieldGrowthPolicy(QFormLayout.FieldsStayAtSizeHint);
formLayout->setFormAlignment([Qt](docs_qt.html).AlignHCenter | [Qt](docs_qt.html).AlignTop);
formLayout->setLabelAlignment([Qt](docs_qt.html).AlignLeft);
Type Documentation
QFormLayout.FieldGrowthPolicy
该枚举指定可以被用来控制在该表单的字段成长的方式,不同的政策。
Constant | Value | Description |
---|---|---|
QFormLayout.FieldsStayAtSizeHint |
0 |
这些字段永远长不大超出了他们的effective size hint 。这是默认的QMacStyle 。 |
QFormLayout.ExpandingFieldsGrow |
1 |
与横向领域size policy 的Expanding or MinimumExpanding 将增长到填满可用空间。其他栏位不得超出其有效尺寸暗示。这是PLASTIQUE的默认策略。 |
QFormLayout.AllNonFixedFieldsGrow |
2 |
用大小政策,使他们能够成长各个领域将增长到填满可用空间。这是大多数款式的默认策略。 |
See also fieldGrowthPolicy。
QFormLayout.ItemRole
此枚举指定部件(或其他布局项目)的类型,可能会出现一排。
Constant | Value | Description |
---|---|---|
QFormLayout.LabelRole |
0 |
一个标籤控件。 |
QFormLayout.FieldRole |
1 |
字段部件。 |
QFormLayout.SpanningRole |
2 |
一个小部件,跨越标籤和字段列。 |
See also itemAt()和getItemPosition( ) 。
QFormLayout.RowWrapPolicy
该枚举指定可以被用来控制在该表格中的行包的方式,不同的政策。
Constant | Value | Description |
---|---|---|
QFormLayout.DontWrapRows |
0 |
字段总是奠定了旁边的标籤。这是除了Qt的扩展风格的缺省策略为所有的风格和QS60Style 。 |
QFormLayout.WrapLongRows |
1 |
标籤被给予足够的水平空间,以适应宽的标籤,并且该空间的剩馀部分被提供给字段。如果一个场对的最小尺寸大于可用空间更宽,该字段被换到下一行。这是为Qt扩展的风格和和默认策略QS60Style 。 |
QFormLayout.WrapAllRows |
2 |
字段总是布置下他们的标籤。 |
See also rowWrapPolicy。
Method Documentation
QFormLayout.__init__ (self, QWidget parent = None)
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
构造一个新的窗体布局与给定parent小工具。
See also QWidget.setLayout( ) 。
QFormLayout.addItem (self, QLayoutItem item)
该item说法有它的所有权转移给Qt的。
从重新实现QLayout.addItem( ) 。
QFormLayout.addRow (self, QWidget label, QWidget field)
该label说法有它的所有权转移给Qt的。
该field说法有它的所有权转移给Qt的。
添加一新行,以这种形式布局的底部,用给定的label和field。
See also insertRow( ) 。
QFormLayout.addRow (self, QWidget label, QLayout field)
该label说法有它的所有权转移给Qt的。
该field说法有它的所有权转移给Qt的。
这是一个重载函数。
QFormLayout.addRow (self, QString labelText, QWidget field)
该field说法有它的所有权转移给Qt的。
这是一个重载函数。
此重载自动创建一个QLabel背后的幕后labelText作为其文本。该field被设置为新的QLabel的buddy。
QFormLayout.addRow (self, QString labelText, QLayout field)
该field说法有它的所有权转移给Qt的。
这是一个重载函数。
此重载自动创建一个QLabel背后的幕后labelText作为其文本。
QFormLayout.addRow (self, QWidget widget)
该widget说法有它的所有权转移给Qt的。
这是一个重载函数。
将指定的widget在这种形式布局的结束。该widget横跨两列。
QFormLayout.addRow (self, QLayout layout)
该layout说法有它的所有权转移给Qt的。
这是一个重载函数。
将指定的layout在这种形式布局的结束。该layout横跨两列。
int QFormLayout.count (self)
从重新实现QLayout.count( ) 。
Qt.Orientations QFormLayout.expandingDirections (self)
从重新实现QLayoutItem.expandingDirections( ) 。
FieldGrowthPolicy QFormLayout.fieldGrowthPolicy (self)
Qt.Alignment QFormLayout.formAlignment (self)
[
(int rowPtr, ItemRole rolePtr) QFormLayout.getItemPosition (self, int index)
检索项的行和角色(列)在指定的index。如果index是出界, rowPtr_被设置为-1 ,否则该行被存储在rowPtr和作用是存储在*_rolePtr。
](docs_index.htm)
See also itemAt( )count( )getLayoutPosition()和getWidgetPosition( ) 。
(int rowPtr, ItemRole rolePtr) QFormLayout.getLayoutPosition (self, QLayout layout)
检索指定的子行和作用(列)layout。如果layout是不是在形式布局, rowPtr_被设置为-1 ,否则该行被存储在rowPtr和作用是存储在*_rolePtr。
(int rowPtr, ItemRole rolePtr) QFormLayout.getWidgetPosition (self, QWidget widget)
检索指定的行和作用(列)widget在布局。如果widget是不是在布局, rowPtr_被设置为-1 ,否则该行被存储在rowPtr和作用是存储在*_rolePtr。
See also getItemPosition()和itemAt( ) 。
bool QFormLayout.hasHeightForWidth (self)
从重新实现QLayoutItem.hasHeightForWidth( ) 。
int QFormLayout.heightForWidth (self, int width)
从重新实现QLayoutItem.heightForWidth( ) 。
int QFormLayout.horizontalSpacing (self)
QFormLayout.insertRow (self, int row, QWidget label, QWidget field)
该label说法有它的所有权转移给Qt的。
该field说法有它的所有权转移给Qt的。
插入新行的位置row在这种形式布局,与给定label和field。如果row是出界,新行是在后面。
See also addRow( ) 。
QFormLayout.insertRow (self, int row, QWidget label, QLayout field)
该label说法有它的所有权转移给Qt的。
该field说法有它的所有权转移给Qt的。
这是一个重载函数。
QFormLayout.insertRow (self, int row, QString labelText, QWidget field)
该field说法有它的所有权转移给Qt的。
这是一个重载函数。
此重载自动创建一个QLabel背后的幕后labelText作为其文本。该field被设置为新的QLabel的buddy。
QFormLayout.insertRow (self, int row, QString labelText, QLayout field)
该field说法有它的所有权转移给Qt的。
这是一个重载函数。
此重载自动创建一个QLabel背后的幕后labelText作为其文本。
QFormLayout.insertRow (self, int row, QWidget widget)
该widget说法有它的所有权转移给Qt的。
这是一个重载函数。
插入指定的widget在位置row在这种形式布局。该widget横跨两列。如果row是出界,小部件是在后面。
QFormLayout.insertRow (self, int row, QLayout layout)
该layout说法有它的所有权转移给Qt的。
这是一个重载函数。
插入指定的layout在位置row在这种形式布局。该layout横跨两列。如果row是出界,小部件是在后面。
QFormLayout.invalidate (self)
从重新实现QLayoutItem.invalidate( ) 。
QLayoutItem QFormLayout.itemAt (self, int row, ItemRole role)
[
返回指定布局项目row用指定的role(列) 。返回0,如果没有这样的项目。
](docs_qlayoutitem.html)
See also QLayout.itemAt()和setItem( ) 。
QLayoutItem QFormLayout.itemAt (self, int index)
从重新实现QLayout.itemAt( ) 。
Qt.Alignment QFormLayout.labelAlignment (self)
QWidget QFormLayout.labelForField (self, QWidget field)
[
返回与给定关联的标籤field。
](docs_qwidget.html)
QWidget QFormLayout.labelForField (self, QLayout field)
[
这是一个重载函数。
](docs_qwidget.html)
QSize QFormLayout.minimumSize (self)
从重新实现QLayoutItem.minimumSize( ) 。
int QFormLayout.rowCount (self)
返回行形式的数量。
See also QLayout.count( ) 。
RowWrapPolicy QFormLayout.rowWrapPolicy (self)
[
QFormLayout.setFieldGrowthPolicy (self, FieldGrowthPolicy policy)
QFormLayout.setFormAlignment (self, Qt.Alignment alignment)
QFormLayout.setGeometry (self, QRect rect)
](docs_qformlayout.html#RowWrapPolicy-enum)
从重新实现QLayoutItem.setGeometry( ) 。
QFormLayout.setHorizontalSpacing (self, int spacing)
QFormLayout.setItem (self, int row, ItemRole role, QLayoutItem item)
该item说法有它的所有权转移给Qt的。
设置在给定的项目row对于给定的role至item,必要时用空行延伸的布局。
如果电池已经被佔用时,item没有被插入且一个错误消息被发送到控制台。该item横跨两列。
Warning:请不要使用此功能来添加子布局或子部件项目。使用setLayout()或setWidget( )来代替。
See also setLayout( ) 。
QFormLayout.setLabelAlignment (self, Qt.Alignment alignment)
QFormLayout.setLayout (self, int row, ItemRole role, QLayout layout)
该layout说法有它的所有权转移给Qt的。
设置子布局在给定的row对于给定的role至layout,必要时用空行延伸的形式布局。
如果电池已经被佔用时,layout没有被插入且一个错误消息被发送到控制台。
Note:对于大多数应用,addRow()或insertRow( )应该使用的的setLayout ( ) 。
See also setWidget( ) 。
QFormLayout.setRowWrapPolicy (self, RowWrapPolicy policy)
QFormLayout.setSpacing (self, int)
此功能可设置垂直和水平间距spacing。
See also spacing( )setVerticalSpacing()和setHorizontalSpacing( ) 。
QFormLayout.setVerticalSpacing (self, int spacing)
QFormLayout.setWidget (self, int row, ItemRole role, QWidget widget)
该widget说法有它的所有权转移给Qt的。
设置部件在给定的row对于给定的role至widget,必要时用空行延伸的布局。
如果电池已经被佔用时,widget没有被插入且一个错误消息被发送到控制台。
Note:对于大多数应用,addRow()或insertRow( )应该使用setWidget的( ) 。
See also setLayout( ) 。
QSize QFormLayout.sizeHint (self)
从重新实现QLayoutItem.sizeHint( ) 。
int QFormLayout.spacing (self)
如果垂直间距相等的水平间距,这个函数返回该值,否则返回-1 。
See also setSpacing( )verticalSpacing()和horizontalSpacing( ) 。
QLayoutItem QFormLayout.takeAt (self, int index)
[
该QLayoutItem结果
](docs_qlayoutitem.html)
从重新实现QLayout.takeAt( ) 。
int QFormLayout.verticalSpacing (self)