QFormLayout 是一个列表布局器,每一行可以添加两个元素,且一一对应;
列表布局器也可以进行嵌套,例如在里面可以嵌套一个平行布局
演示比较简单,合适初学者食用
打开QT,创建一个 widget 项目
在 main.cpp里面,将窗口大小改为 300x300 , 当然这一步不做也可以
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.resize(300,300); // 修改窗口大小为 300x300
w.show();
return a.exec();
}
下面代码是在 widget.cpp 中
#include "widget.h"
#include "ui_widget.h"
#include <QFormLayout>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
// 创建列表布局
QFormLayout * flay = new QFormLayout(this);
// 创建编辑框
QLineEdit * name = new QLineEdit();
QLineEdit * age = new QLineEdit();
QLineEdit * email = new QLineEdit();
// 将编辑框添加到列表布局中 addRow(标题,控件名)
flay->addRow("&Name:",name); // 可以看到这里加了一个 & 符号, 表示创建快捷键
flay->addRow("&Age:",age); // 创建一个快捷键,&A 就表示 按下 ALT+A 就可以将光标移动过来
// 插入行(行序号,标题,控件名)
flay->insertRow(1,"&Email:",email);
// 创建标签,修改字体颜色
QLabel *info = new QLabel("input");
info->setStyleSheet("color:red"); // 将字体颜色写入样式表
// 插入到第 0 行
flay->insertRow(0,"",info);
// 创建按钮
QPushButton *save = new QPushButton("save");
QPushButton *clear = new QPushButton("clear");
// 新建一个平行布局器,将按钮添加到平行布局器中
QHBoxLayout *hblay = new QHBoxLayout();
hblay->addWidget(save);
hblay->addWidget(clear);
// 将平行布局加入到列表布局中,实现嵌套效果
flay->addRow(hblay);
}
Widget::~Widget()
{
delete ui;
}
需要特别注意的是 & 符号,在“&name”中,实际上 &符号不会先窗口上面显示出来,这里只是表示将&符号后面的一个字母创建快捷键,按下 alt + &后面的字母 触发
下图是演示效果