QT入门(五)——手动布局|写代码自动布局

这里写自定义目录标题

手动布局

在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;
}


  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值