1、如何实现下面的用户界面
1.1、 解决方法
1.1.1、 绝对定位组件的坐标和大小
1.1.2、 嵌套QBoxLayout(三个水平布局,一个垂直布局)
1.1.3、 创建3x2的QGridLayout
// 首先用GridLayout来实现上面的布局
.cpp文件
#include "widget.h"
#include <QGridLayout>
#include <QLineEdit>
#include <QLabel>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
QLabel* Name_Label = new QLabel("Name: ");
QLabel* Email_Label = new QLabel("Email: ");
QLabel* Address_Label = new QLabel("Address: ");
QLineEdit* Name_edit = new QLineEdit();
QLineEdit* Email_edit = new QLineEdit();
QLineEdit* Address_edit = new QLineEdit();
QGridLayout* gridlayout = new QGridLayout();
gridlayout->setSpacing(10);//布局中每个控件间隔10
gridlayout->addWidget(Name_Label, 0, 0);//这个控件在第0行0列。
gridlayout->addWidget(Email_Label, 1, 0);
gridlayout->addWidget(Address_Label, 2, 0);
gridlayout->addWidget(Name_edit, 0, 1);//利用这个网格布局将界面分成3行2列。
gridlayout->addWidget(Email_edit, 1, 1);
gridlayout->addWidget(Address_edit, 2, 1);
//gridlayout->setColumnStretch(0, 1);//第0列和第1列按照 1:4的比例。
// gridlayout->setColumnStretch(1, 4);
this->setLayout(gridlayout);
this->setWindowTitle("FTP");
}
Widget::~Widget()
{
}
2、QFormLayout布局管理器((http://blog.csdn.net/liang19890820/article/details/51539339))
2.1、 以表单(Form)的方式管理界面组件
2.2、 表单布局中的标签和组件是相互对应的关系
2.3、 QFormLayout的用法概要
2.4、 QFormLayout的样式函数
2.5、 表单布局支持嵌套,其它布局管理器可以作为子布局被其管理
.cpp实现文件。
#include "widget.h"
#include <QFormLayout>
#include <QLineEdit>
#include <QLabel>
Widget::Widget(QWidget *parent)
: QWidget(parent, Qt::WindowCloseButtonHint)
{
QLineEdit* Name_edit = new QLineEdit();
QLineEdit* Email_edit = new QLineEdit();
QLineEdit* Address_edit = new QLineEdit();
QFormLayout* formlayout = new QFormLayout();
formlayout->setSpacing(10);//设置这个布局中组件间隔为10
formlayout->addRow("Name: ", Name_edit);//第一个参数就是一个文本标签,第二个参数是一个组件
formlayout->addRow("Email: ", Email_edit);//2行
formlayout->addRow("Address: ", Address_edit);//3行
//formlayout->setLabelAlignment(Qt::AlignRight);//Label控件右对齐。
//formlayout->setRowWrapPolicy(QFormLayout::WrapAllRows);//设置样式。分为两行,字段放在标签的下面。
formlayout->setRowWrapPolicy(QFormLayout::WrapLongRows);
this->setLayout(formlayout);
this->setWindowTitle("FTP");
}
Widget::~Widget()
{
}
3、小结
3.1、 QFormLayout以表单的方式管理界面组件
3.2、 QFormLayout的样式设置简洁明了
3.3、 QFormLayout支持布局管理器的相互嵌套
3.4、 QFormLayout是嵌入式产品中最常用的布局方式