Home · All Classes · Modules · QSS HELP · QSS 案例 · VER007 HOME |
该QFormLayout类管理输入部件及其关联的标籤形式。More...
继承QLayout。
该QFormLayout类管理输入部件及其关联的标籤形式。
QFormLayout是勾画出它在一个两列的表格孩子一个方便的布局类。左栏包括标籤,右列包含“场”的小部件(行编辑器,旋转框等) 。
传统上,这样的两栏式布局形式采用实现QGridLayout。 QFormLayout是更高级别的替代方案,提供了以下优点:
例如,本 Mac OS X Aqua和KDE指引指定的标籤应该是右对齐的,而Windows和GNOME应用程序通常使用左对齐。
对于具有小显示器的设备, QFormLayout可以设置为wrap long rows或什至wrap all rows。
该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(tr("&Name:")); nameLabel->setBuddy(nameLineEdit); emailLabel = new QLabel(tr("&Name:")); emailLabel->setBuddy(emailLineEdit); ageLabel = new QLabel(tr("&Name:")); ageLabel->setBuddy(ageSpinBox); QGridLayout *gridLayout = new QGridLayout; 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.AlignHCenter | Qt.AlignTop); formLayout->setLabelAlignment(Qt.AlignLeft);
该枚举指定可以被用来控制在该表单的字段成长的方式,不同的政策。
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。
此枚举指定部件(或其他布局项目)的类型,可能会出现一排。
Constant | Value | Description |
---|---|---|
QFormLayout.LabelRole | 0 | 一个标籤控件。 |
QFormLayout.FieldRole | 1 | 字段部件。 |
QFormLayout.SpanningRole | 2 | 一个小部件,跨越标籤和字段列。 |
See also itemAt()和getItemPosition( ) 。
该枚举指定可以被用来控制在该表格中的行包的方式,不同的政策。
Constant | Value | Description |
---|---|---|
QFormLayout.DontWrapRows | 0 | 字段总是奠定了旁边的标籤。这是除了Qt的扩展风格的缺省策略为所有的风格和QS60Style。 |
QFormLayout.WrapLongRows | 1 | 标籤被给予足够的水平空间,以适应宽的标籤,并且该空间的剩馀部分被提供给字段。如果一个场对的最小尺寸大于可用空间更宽,该字段被换到下一行。这是为Qt扩展的风格和和默认策略QS60Style。 |
QFormLayout.WrapAllRows | 2 | 字段总是布置下他们的标籤。 |
See also rowWrapPolicy。
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
构造一个新的窗体布局与给定parent小工具。
See also QWidget.setLayout( ) 。
该item说法有它的所有权转移给Qt的。
从重新实现QLayout.addItem( ) 。
该label说法有它的所有权转移给Qt的。
该field说法有它的所有权转移给Qt的。
添加一新行,以这种形式布局的底部,用给定的label和field。
See also insertRow( ) 。
该label说法有它的所有权转移给Qt的。
该field说法有它的所有权转移给Qt的。
这是一个重载函数。
该field说法有它的所有权转移给Qt的。
这是一个重载函数。
此重载自动创建一个QLabel背后的幕后labelText作为其文本。该field被设置为新的QLabel的buddy。
该field说法有它的所有权转移给Qt的。
这是一个重载函数。
此重载自动创建一个QLabel背后的幕后labelText作为其文本。
该widget说法有它的所有权转移给Qt的。
这是一个重载函数。
将指定的widget在这种形式布局的结束。该widget横跨两列。
该layout说法有它的所有权转移给Qt的。
这是一个重载函数。
将指定的layout在这种形式布局的结束。该layout横跨两列。
从重新实现QLayout.count( ) 。
从重新实现QLayoutItem.expandingDirections( ) 。
检索项的行和角色(列)在指定的index。如果index是出界, *rowPtr被设置为-1 ,否则该行被存储在*rowPtr和作用是存储在*rolePtr。
See also itemAt( )count( )getLayoutPosition()和getWidgetPosition( ) 。
检索指定的子行和作用(列)layout。如果layout是不是在形式布局, *rowPtr被设置为-1 ,否则该行被存储在*rowPtr和作用是存储在*rolePtr。
检索指定的行和作用(列)widget在布局。如果widget是不是在布局, *rowPtr被设置为-1 ,否则该行被存储在*rowPtr和作用是存储在*rolePtr。
See also getItemPosition()和itemAt( ) 。
从重新实现QLayoutItem.hasHeightForWidth( ) 。
从重新实现QLayoutItem.heightForWidth( ) 。
该label说法有它的所有权转移给Qt的。
该field说法有它的所有权转移给Qt的。
插入新行的位置row在这种形式布局,与给定label和field。如果row是出界,新行是在后面。
See also addRow( ) 。
该label说法有它的所有权转移给Qt的。
该field说法有它的所有权转移给Qt的。
这是一个重载函数。
该field说法有它的所有权转移给Qt的。
这是一个重载函数。
此重载自动创建一个QLabel背后的幕后labelText作为其文本。该field被设置为新的QLabel的buddy。
该field说法有它的所有权转移给Qt的。
这是一个重载函数。
此重载自动创建一个QLabel背后的幕后labelText作为其文本。
该widget说法有它的所有权转移给Qt的。
这是一个重载函数。
插入指定的widget在位置row在这种形式布局。该widget横跨两列。如果row是出界,小部件是在后面。
该layout说法有它的所有权转移给Qt的。
这是一个重载函数。
插入指定的layout在位置row在这种形式布局。该layout横跨两列。如果row是出界,小部件是在后面。
从重新实现QLayoutItem.invalidate( ) 。
返回指定布局项目row用指定的role(列) 。返回0,如果没有这样的项目。
See also QLayout.itemAt()和setItem( ) 。
从重新实现QLayout.itemAt( ) 。
返回与给定关联的标籤field。
See also itemAt( ) 。
这是一个重载函数。
从重新实现QLayoutItem.minimumSize( ) 。
返回行形式的数量。
See also QLayout.count( ) 。
从重新实现QLayoutItem.setGeometry( ) 。
该item说法有它的所有权转移给Qt的。
设置在给定的项目row对于给定的role至item,必要时用空行延伸的布局。
如果电池已经被佔用时,item没有被插入且一个错误消息被发送到控制台。该item横跨两列。
Warning:请不要使用此功能来添加子布局或子部件项目。使用setLayout()或setWidget( )来代替。
See also setLayout( ) 。
该layout说法有它的所有权转移给Qt的。
设置子布局在给定的row对于给定的role至layout,必要时用空行延伸的形式布局。
如果电池已经被佔用时,layout没有被插入且一个错误消息被发送到控制台。
Note:对于大多数应用,addRow()或insertRow( )应该使用的的setLayout ( ) 。
See also setWidget( ) 。
此功能可设置垂直和水平间距spacing。
See also spacing( )setVerticalSpacing()和setHorizontalSpacing( ) 。
该widget说法有它的所有权转移给Qt的。
设置部件在给定的row对于给定的role至widget,必要时用空行延伸的布局。
如果电池已经被佔用时,widget没有被插入且一个错误消息被发送到控制台。
Note:对于大多数应用,addRow()或insertRow( )应该使用setWidget的( ) 。
See also setLayout( ) 。
从重新实现QLayoutItem.sizeHint( ) 。
如果垂直间距相等的水平间距,这个函数返回该值,否则返回-1 。
See also setSpacing( )verticalSpacing()和horizontalSpacing( ) 。
该QLayoutItem结果
从重新实现QLayout.takeAt( ) 。
PyQt 4.10.3 for X11 | Copyright © Riverbank Computing Ltd and Nokia 2012 | Qt 4.8.5 |