1.布局(Layouts)
窗体上的每个控件都需要有一个合适的尺寸和位置,从而设计出合理、美观的界面。
Qt中有三种方式对窗体上的控件进行布局管理,分别是:绝对布局、手工布局和Qt布局管理器。
2.绝对布局
绝对布局很简单,控件的位置是固定的,控件不会随着窗口大小的变化而变化。
由于控件大小不变,当改变控件标题,文本可能显示不全。
3.手工布局
手工布局中控件的位置是固定的,但是控件的尺寸会随着窗口的大小变化而变化,可以通过重写窗体控件的resizeEvent()实现对子控件的大小的设置。setGeometry
管理窗体上控件最简单的方法就是使用Qt的布局管理器。
4.布局管理器可以使控件的大小随着窗口大小的改变而改变。
Qt Creator有4种布局组件,QHBoxLayout水平布局、QVBoxLayout垂直布局、QGridLayout网格布局、QStackLayout 分组布局。
水平布局:控件按水平方向排列。
垂直布局:控件按垂直方向排列,宽度随垂直布局管理器改变而改变,但是控件高度不变。
Grid布局管理器可以以网格的形式,将它所管理的部件以一定的矩阵形式排列。类似于HTML 的table。
可以先拖布局组件,再拖控件;也可以先拖控件。
如果对当前布局不满意,可以将布局管理器整体选中,单击上面工具栏上的“Break Layout”按钮,便可取消布局管理器。
5.间隔器(Spacers)是用来填补空白的控件,在布局管理器中配合使用。

实例:
hboxLayout ,button1 23均是成员变量。

//创建横向布局
hboxLayout = new QHBoxLayout();
button1 = new QPushButton("按钮1");
button2 = new QPushButton("按钮2");
button3 = new QPushButton("按钮3");
//向布局中添加控件
hboxLayout->addWidget(button1);
hboxLayout->addWidget(button2);
hboxLayout->addWidget(button3);
//间隔
hboxLayout->setSpacing(60);
//实例QWidget
widget = new QWidget();
//绑定布局
widget->setLayout(hboxLayout);
//创建纵向布局
gridLayout = new QGridLayout();
button1 = new QPushButton("按钮1");
button2 = new QPushButton("按钮2");
button3 = new QPushButton("按钮3");
//向布局中添加控件
//0,0,1,1 行 列 行间距 列间距
gridLayout->addWidget(button1,0,0,1,1);
gridLayout->addWidget(button2,0,1,1,1);
gridLayout->addWidget(button3,1,0,1,1);
//实例QWidget
widget = new QWidget();
//绑定布局
widget->setLayout(gridLayout);
//绑定界面
this->setCentralWidget(widget);