Qt_布局管理器

目录

1、QVBoxLayout垂直布局

1.1 QVBoxLayout的使用

1.2 多个布局管理器 

2、QHBoxLayout水平布局 

2.1 QHBoxLayout的使用

2.2 嵌套的Layout 

3、QGridLayout网格布局 

3.1  QGridLayout的使用

3.2 设置控件大小比例 

4、QFormLayout 

4.1  QFormLayout的使用

5、QSpacerItem 

5.1 QSpacerItem的使用

结语 


前言:

        使用Qt时,在没有布局管理器(Layout)概念之前,在界面上创建控件都是用“绝对定位”来设置的,即调用setGeometry或move函数摆放,或者直接在ui文件中对控件进行手动的摆放,这些方式都会导致界面上的控件摆放存在偏差,影响整体美观。因此引入布局管理器机制,将界面上的控件都直接放到布局管理器下,布局管理器会自动对这些控件进行位置大小的调整,让整个界面看起来更加规整。

1、QVBoxLayout垂直布局

         QVBoxLayout表示垂直布局管理器,他也是一个控件,只不过该控件的作用是对内部的其他控件进行规整摆放。QVBoxLayout属性介绍如下:

layoutLeftMargin
左侧边距
layoutRightMargin
右侧边距
layoutTopMargin
上方边距
layoutBottomMargin
下方边距
layoutSpacing
相邻元素之间的间距

        与QVBoxLayout相关的常用接口:

addWidget(QWidget*)
把控件添加到布局管理器中
setLayout(QLayout*) 是QWidget的接口,用于将布局管理器设置到widget下

1.1 QVBoxLayout的使用

        创建一个QVBoxLayout和三个按钮控件,将三个按钮控件放到该QVBoxLayout下,观察生成后的界面,代码如下:

#include "widget.h"
#include "ui_widget.h"
#include <QVBoxLayout>
#include <QPushButton>

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

    QVBoxLayout* qv = new QVBoxLayout();//创建垂直布局管理器

    //创建三个按钮
    QPushButton* qp1 = new QPushButton("按钮1");
    QPushButton* qp2 = new QPushButton("按钮2");
    QPushButton* qp3 = new QPushButton("按钮3");

    //将三个按钮放到管理器下
    qv->addWidget(qp1);
    qv->addWidget(qp2);
    qv->addWidget(qp3);

    //将管理器设置到当前widge下
    this->setLayout(qv);

}

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

        运行结果:

        从结果可以发现三个按钮规章有序的显示在界面上,并且对widget界面进行拉伸时,这三个按钮也会跟着拉伸的比例变化,如果这三个按钮直接放到widget界面上,则按钮尺寸不会随着widget界面的尺寸变化而变化。能够实现这个效果的原因是布局管理器作用在widget上,换句话说,一个widget只能有一个布局管理器并且布局管理器就是widget本身,所以对widget界面进行尺寸拉伸时,实际上就是对布局管理器做拉伸,进而导致布局管理器里的控件也跟着拉伸了

1.2 多个布局管理器 

        虽然一个widget下只能有一个布局管理器,但是可以通过ui文件中界面创建的方式在一个widget下生成多个布局管理器,操作如下:

        但是在运行程序后,发现对最终的界面进行拖拽则无法影响界面上的按钮,如下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安权_code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值