QT学习笔记(十四):QLayout的属性介绍
主要包括QBoxLayout、和QGridLayout以及QFormLayout等的参数类似。
我主要说明一下QGridLayout在QtDesigner中它的属性的意义,以及QFormLayout的部分属性
一、QGridLayout属性介绍
1、QGridlayout以方格的形式管理窗口部件,先看QGridLayout的属性,如下图
2、各个参数的介绍:
1)layoutLeftMargin …至layoutBottomMargin在ui_MainWindow.h中自动生成的代码是:
gridLayout->setContentsMargins(20, 10, 10, 10);
学过CSS都知道,这是设置一个元素所有外边距的宽度,或者设置各边上外边距的宽度
On most platforms, the margin is 11 pixels in all directions.
2)HorizontalSpacing…至VerticalSpacing在ui_MainWindow.h中自动生成的代码是:
gridLayout->setHorizontalSpacing(6);
gridLayout->setVerticalSpacing(6);
这是设置两个控件之间的水平和竖直距离
3)LayoutRowStretch在ui_MainWindow.h中自动生成的代码是:
gridLayout->setRowStretch(0, 1);
gridLayout->setRowStretch(1, 1);
gridLayout->setRowStretch(2, 1);
表示在第0行、第1行、第2行 在竖直方向的空间比例分配,大家稍微改一下参数就能看出来效果
4)LayoutColumnStretch在ui_MainWindow.h中自动生成的代码是:
gridLayout->setColumnStretch(1, 1);
表示设置第0列、第1列两者在水平方向的空间比例分配。
5)LayoutRowMinimumHeight在ui_MainWindow.h中自动生成的代码是:
gridLayout->setRowMinimumHeight(0, 1);
gridLayout->setRowMinimumHeight(1, 2);
gridLayout->setRowMinimumHeight(2, 3);
表示在第0行、第1行、第2行的最小高度是1pixels,2pixels,3pixels
6)LayoutColumnMinimumWidth在ui_MainWindow.h中自动生成的代码是:
gridLayout->setColumnMinimumWidth(0, 4);
gridLayout->setColumnMinimumWidth(1, 5);
表示设置第0列、第1列的最小宽度是4pixels、5pixels
7)LayoutSizeConstraint在ui_MainWindow.h中自动生成的代码是:
gridLayout->setSizeConstraint(QLayout::SetDefaultConstraint);
此属性保存布局的调整大小模式看下表:
枚举 QLayout::SizeConstraint 可能的值是:
二、QFormLayout属性介绍
1、QFormLayout类管理输入型控件和它的label组成的那些form表格,包括它的界面参数如下图
2、界面中对应的代码如下:
formLayout = new QFormLayout(widget1); formLayout->setSpacing(6); formLayout->setContentsMargins(11, 11, 11, 11); formLayout->setObjectName(QString::fromUtf8("formLayout")); formLayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); formLayout->setRowWrapPolicy(QFormLayout::DontWrapRows); formLayout->setContentsMargins(0, 0, 0, 0); label_4 = new QLabel(widget1); label_4->setObjectName(QString::fromUtf8("label_4")); formLayout->setWidget(0, QFormLayout::LabelRole, label_4); lineEdit = new QLineEdit(widget1); lineEdit->setObjectName(QString::fromUtf8("lineEdit")); formLayout->setWidget(0, QFormLayout::FieldRole, lineEdit); label_5 = new QLabel(widget1); label_5->setObjectName(QString::fromUtf8("label_5")); formLayout->setWidget(1, QFormLayout::LabelRole, label_5); comboBox = new QComboBox(widget1); comboBox->setObjectName(QString::fromUtf8("comboBox")); formLayout->setWidget(1, QFormLayout::FieldRole, comboBox);
3、其中值得一说的是:LayoutFieldGrowthPolicy属性
此枚举指定可用于控制表单字段增长方式的不同策略。
4、还有一个属性值得说:LayoutRowWrapPolicy
这个属性设置了表格如何排版各个元素
如果你想把每个标签放在相关字段的上方,而不是和它相邻,就设置这个属性值为WrapAllRows。