QFormLayout表单布局容器,只有两列,行数无限制
重载成员函数:
void addRow(QWidget *label, QWidget *field);
void addRow(QWidget *label, QLayout *field);
void addRow(const QString &labelText, QWidget *field);
void addRow(const QString &labelText, QLayout *field);
void addRow(QWidget *widget);
void addRow(QLayout *layout);
将具有给定标签和字段的新行添加到此表单布局的底部。
写代码测试一下
setMinimumSize(600,400);
QLineEdit* lineEdit1 = new QLineEdit("文字版1填1widget接口");
QPushButton* pushButton = new QPushButton("1填2widget接口");
QPushButton* pushButton1 = new QPushButton("水平布局1");
QLineEdit* lineEdit2 = new QLineEdit("图标版1填1widget接口");
QPushButton* pushButton2 = new QPushButton("水平layout1");
QLabel* label = new QLabel();
QPixmap pix(":/image/label.ico");
label->setPixmap(pix);
QHBoxLayout* lay1 = new QHBoxLayout();
lay1->addStretch(2);
lay1->addWidget(pushButton1,1);
lay1->setSpacing(30);
lay1->addWidget(pushButton2,1);
lay1->addStretch(2);
QPushButton* pushButton3 = new QPushButton("水平布局2");
QPushButton* pushButton4 = new QPushButton("水平layout2");
QHBoxLayout* lay2 = new QHBoxLayout();
lay2->addWidget(pushButton3);
lay2->addWidget(pushButton4);
QFormLayout* form = new QFormLayout(this);
form->addRow("文字:",lineEdit1);//文字版1填1接口
form->addRow(label,lineEdit2);//1填1接口
form->addRow("lay1:",lay1);//1填1布局容器接口
form->addRow(lay2);//1填2布局容器接口
form->addRow(pushButton);//1填2接口
看一下效果图:
成员函数:
void setRowWrapPolicy(RowWrapPolicy policy);
参数是个枚举值
enum RowWrapPolicy {
DontWrapRows,
WrapLongRows,
WrapAllRows
};
默认值取决于小部件或应用程序的样式。对于Qt扩展样式,默认是WrapLongRows;对于其他样式,默认是DontWrapRows。如果希望将每个标签显示在其相关字段上方(而不是在其旁边),请将此属性设置为WrapAllRows。
写代码测试一下:
setMinimumSize(600,400);
QLineEdit* lineEdit1 = new QLineEdit("文字版1填1widget接口");
QPushButton* pushButton = new QPushButton("1填2widget接口");
QPushButton* pushButton1 = new QPushButton("水平布局1");
QLineEdit* lineEdit2 = new QLineEdit("图标版1填1widget接口");
QPushButton* pushButton2 = new QPushButton("水平layout1");
QLabel* label = new QLabel();
QPixmap pix(":/image/label.ico");
label->setPixmap(pix);
QHBoxLayout* lay1 = new QHBoxLayout();
lay1->addStretch(2);
lay1->addWidget(pushButton1,1);
lay1->setSpacing(30);
lay1->addWidget(pushButton2,1);
lay1->addStretch(2);
QPushButton* pushButton3 = new QPushButton("水平布局2");
QPushButton* pushButton4 = new QPushButton("水平layout2");
QHBoxLayout* lay2 = new QHBoxLayout();
lay2->addWidget(pushButton3);
lay2->addWidget(pushButton4);
QFormLayout* form = new QFormLayout(this);
//设置表单中的标签都位于控件的上方
form->setRowWrapPolicy(QFormLayout::WrapAllRows);
form->addRow("文字:",lineEdit1);//文字版1填1接口
form->addRow(label,lineEdit2);//1填1接口
form->addRow("lay1:",lay1);//1填1布局容器接口
form->addRow(lay2);//1填2布局容器接口
form->addRow(pushButton);//1填2接口
看一下效果图: