【Qt】垂直布局管理器QVBoxLayout

 垂直布局管理器QVBoxLayout

        在之前学习Qt的过程中,将控件放在界面上,都是依靠“手动”的方式来布局的,但是手动调整的方式是不科学的。

  1. 手动布局的方式非常复杂,而且不精确
  2. 无法对窗口大小进行自适应

因此Qt引入布局管理器来解决此类问题。

使用QVBoxLayout表示垂直布局管理器(V 是 vertical 的缩写)

  • 核心属性
属性说明

layoutLeftMargin

左侧边距

layoutRightMargin

右侧边距

layoutTopMargin

上⽅边距

layoutBottomMargin

下方边距

layoutSpacing

相邻元素之间的边距

layout只是用于界面布局,并没有提供信号。

例子:使用QVBoxLayout管控多个控件

(1)编写代码,创建三个按钮和一个布局管理器,并且将按钮添加在布局管理器中。

  • 使用addWidget将控件添加到布局管理器中。
  • 使用setLayout设置布局管理器到widget中。 

(2)运⾏程序, 可以看到此时界⾯上的按钮就存在于布局管理器中. 随着窗⼝尺⼨变化⽽发⽣改变

 

(3)代码实现

#include "widget.h"
#include "ui_widget.h"

#include <QPushButton>
#include <QVBoxLayout>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 设置三个按钮
    QPushButton* botton1 = new QPushButton("按钮1");
    QPushButton* botton2 = new QPushButton("按钮2");
    QPushButton* botton3 = new QPushButton("按钮3");

    // 设置一个布局管理器
    QVBoxLayout* layout = new QVBoxLayout();
    layout->addWidget(botton1);
    layout->addWidget(botton2);
    layout->addWidget(botton3);

    // 将布局管理器设置到widget中
    this->setLayout(layout);
}

Widget::~Widget()
{
    delete ui;
}

只能设置一个布局管理器。 

例子:创建俩个QVBoxlayout

上述例子中,布局管理器只能使Widget设置一个布局管理器,实际也可以在Qt Designer在一个窗口中创建多个布局管理器。    

(1)在界面管理器中设置俩个QVBoxlayout,在QVBoxlayout中设置三个按钮

(2)运行程序,可以看到按钮已经根据layout自动排列好,只是并不会通过改变窗口而改变这些按钮

在代码中创建layout,其实只是创建一个layout。如果在 QtDesigner 中创建的layout,会先创建一个Widget,然后再在这个新的Widget中添加layout。这个Widget是窗口的Widget的子类。

 

layout标签表示的是布局管理器的本体,外面自动创建出了一个Widget,每个layout里面又可以包含若干个item(也就是一个按钮)。

可以先拖拽layout,然后再往 layout 中拖拽其他的控件。

当然也可以拖拽其他控件,然后将这些控件进行选中,最后再给这些控件套上 layout。

这个按钮就是将选中的按钮套上一个垂直布局的 layout。

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值