手动布局
在ui界面中,先放三个按键,改名字,三个全选中,选择expanding,然后再垂直布局
每次选完其中一个中布局之后,就会在外面有一个红框,同时,右边会有层级关系
有一点需要注意的是,下图中蓝颜色的8个点框定的也是一个内容,相当于是背景,如果把这个外面的大的背景也选定,然后再栅格化,那么运行之后,里面的部件会随着窗口的变化而变化。
步骤:
1.放按钮,设置长宽,改变样式表,修改策略,水平垂直都可以选择expanding
2再放其他的,比如弹簧
3.选中所有,加上最外面的centralWidget,栅格化
写代码布局
在ui界面中不用放任何东西,所有的按键,布局格式都在代码中完成,最终结果如下
mainwinow.h中
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QVBoxLayout>//垂直布局
#include <QHBoxLayout>//水平布局
#include <QGridLayout>//栅栏布局
#include <QPushButton>
#include <QString>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public://公有里面放函数
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private://私有里面放变量
Ui::MainWindow *ui;
//创建一个数组,第一步创建6个按键,第二部垂直布局
QPushButton *buttons[6];
QPushButton *buttons_1[6];
};
#endif // MAINWINDOW_H
mainwindow.cpp中
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QVBoxLayout>//垂直布局
#include <QHBoxLayout>//水平布局
#include <QGridLayout>//栅栏布局
#include <QPushButton>
#include <QString>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//第五步 创建大的水平布局 大的蓝色框
QHBoxLayout *hbox= new QHBoxLayout(ui->centralWidget);//输入ui->就可以关联Widget
//第二步 定义垂直布局
QVBoxLayout *vbox=new QVBoxLayout();
//第三步 排列按键
for(int i=0;i<6;i++)
{
//给按键创建空间和标注号码
buttons[i]=new QPushButton(QString::number(i));
//第四步,关联垂直布局,六个按键与第一个垂直布局关联
vbox->addWidget(buttons[i]);
//可以设置按键
buttons[i]->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Expanding);
//buttons[i]->setMinimumWidth(220);
}
//第六步 关联水平布局
hbox->addLayout(vbox);
//第九步 创建垂直布局
QVBoxLayout *vbox_a=new QVBoxLayout();
//第七步 创建水平布局
QHBoxLayout *hbox_a =new QHBoxLayout();
for(int i=0;i<3;i++)
{
//给按键创建空间和标注按钮
QPushButton *buttons_1=new QPushButton("a"+QString::number(i));
//第八步,关联水平布局
hbox_a->addWidget(buttons_1);
//按键设置
buttons_1->setSizePolicy(QSizePolicy::Expanding,QSizePola icy::Expanding);
//第十步 布局与布局关联
vbox_a->addLayout(hbox_a);
}
//第十一步 创建按水平布局
QHBoxLayout *hbox_b =new QHBoxLayout();
for(int i=0;i<3;i++)
{
//给按键创建空间和标注按钮
QPushButton *buttons_1=new QPushButton("b"+QString::number(i));
//第12步,关联水平布局
hbox_b->addWidget(buttons_1);//按钮与水平布局关联
//按键设置 策略
buttons_1->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
//第13步 布局与布局关联
vbox_a->addLayout(hbox_b);
hbox->addLayout(vbox_a);
}
//手动创建按键
//QPushButton *bt1=new QPushButton();
//buttons[1]=new QPushButton();
}
MainWindow::~MainWindow()
{
delete ui;
}