布局是一个软件质量重要的一方面,体现了软件设计的水平,一个好的软件必然有个好的布局。
Qt中有水平布局:QHBoxLayout
垂直布局:QVBoxLayout
现在我们有这样一个需求,我们希望有三个按钮总在窗口的最左上角,无论窗口怎么拉伸或拖拽,按钮的位置都不动。那么我们就需要用到两个 layout 嵌套了。
大致的思路是在一个垂直的 layout 中嵌套一个水平的 layout,在水平的 layout 右侧设置一个弹簧,在垂直的 layout 下方设置一个弹簧,这样按钮就会一直在左上角了,表示图如下:
一个表示垂直布局,一个表示水平布局
实现代码如下:
myLayout::myLayout(QWidget *parent) :
QWidget(parent),
ui(new Ui::myLayout)
{
ui->setupUi(this);
// 垂直 Layout
QVBoxLayout* mainLayout = new QVBoxLayout(this);
// 水平 Layout
QHBoxLayout* layout = new QHBoxLayout;
// 水平 Layout 增加控件
layout->addWidget(new QPushButton("button1"));
layout->addWidget(new QPushButton("button2"));
layout->addWidget(new QPushButton("button3"));
// 水平 Layout 增加弹簧
layout->addStretch(1);
// 将水平 Layout 添加到垂直 Layout
mainLayout->addLayout(layout);
// 设置垂直 Layout 弹簧
mainLayout->addStretch(1);
}