QHBoxLayout和QVBoxLayout

2022-07-04 09:56:33 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

QHBoxLayout和QVBoxLayout

学习QT到现在,我个人觉得QT挺好学的、也挺难的。好学是因为QT所用的都是类,操作的都是类对象,难呢,是因为都是类,有一些类还需要我们自己去定义、去继承、去重写,我感觉都是一点难点。因为需要理解知道其他的类才可以继承使用。 现在我们先看一下我们最常用的类,我学习到目前为止,基本每一个项目都会用到的类QHBoxLayout和QVBoxLayout,两个类,QHBoxLayout是一个水平布局类,而QVBoxLayout是一个垂直布局类,两个都是我们的布局类。布局,就我个人觉得吧,每一个项目都是要有的布局,因为布局可以吧你的项目布局的美观、变得是自己想要的摆设。 其实有时候我觉得写一个项目就好像我们平常做的是一样,看个人如何的去看,就比如:我要去买一个书架还有一些书回家进行存放。有的人可能会觉得其实买书没必要买书架吧。就我感觉书少的时候还行,但是多起来的时候觉得就算自己去找自己想要的书都难吧。那么就好像我们所做的项目。一个布局一般的项目和一个没布局的项目一样,布局的呢,可能并不是最好的,但是呢看起来很整齐,需要的功能一看就能知道在哪里,而没布局的想要找一个功能还得点开找,那样子我想如果你是老板你也不会要这样的项目吧。 QHBoxLayout水平布局类,就如字面意思,水平布局。我们来看一下简单的例子。

代码语言:javascript复制
#include "dialog.h"
#include <QHBoxLayout>
Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{ 
   
    QPushButton *btn1 = new QPushButton(tr("btn1"));
    QPushButton *btn2 = new QPushButton(tr("btn2"));
    QPushButton *btn3 = new QPushButton(tr("btn3"));

    QHBoxLayout *lyout =new QHBoxLayout;
    lyout->addWidget(btn1);
    lyout->addWidget(btn2);
    lyout->addWidget(btn3);

    setLayout(lyout);
}

首先我们创建了三个btn按钮进行了水品布局。

从从结果我们可以看出跟我们想象中的一样吧,对三个按钮进行了布局 那么我们再来看一下QVBoxLayout垂直布局,我们还是这三个按钮为例: 将我们QHBoxLayout改为QVBoxLayout:

代码语言:javascript复制
#include <QVBoxLayout>
Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{ 
   

    QPushButton *btn1 = new QPushButton(tr("btn1"));
    QPushButton *btn2 = new QPushButton(tr("btn2"));
    QPushButton *btn3 = new QPushButton(tr("btn3"));

    QVBoxLayout *lyout =new QVBoxLayout;
    lyout->addWidget(btn1);
    lyout->addWidget(btn2);
    lyout->addWidget(btn3);

    setLayout(lyout);
}

那么结果也是我们想象中的一样,垂直布局,

那么我们可以想象一下当我们要把布局摆设的跟我们家里面的书架子一样,那么我们要怎么摆呢? 那么我们就可以想到把它两组合来使用。那么我们来看一下下边的例子:

代码语言:javascript复制
Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{ 
   

    QPushButton *btn1 = new QPushButton(tr("btn1"));
    QPushButton *btn2 = new QPushButton(tr("btn2"));
    QPushButton *btn3 = new QPushButton(tr("btn3"));

    QVBoxLayout *lyout1 =new QVBoxLayout;
    lyout1->addWidget(btn1);
    lyout1->addWidget(btn2);
    lyout1->addWidget(btn3);


    QPushButton *ble1 =new QPushButton(tr("ble1"));
    QPushButton *ble2 =new QPushButton(tr("ble2"));
    QPushButton *ble3 =new QPushButton(tr("ble3"));

    QVBoxLayout *lyout2 =new QVBoxLayout;
    lyout2->addWidget(ble1);
    lyout2->addWidget(ble2);
    lyout2->addWidget(ble3);

    QHBoxLayout *lyout = new QHBoxLayout;
    lyout->addLayout(lyout1);
    lyout->addLayout(lyout2);

    setLayout(lyout);
}

从这结果我们机也可以看出我们的想象式书架是可以实现的。 但是我们需要接起来的时候需要用到的是lyout->addLayout(lyout1);

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/149024.html原文链接:https://javaforall.cn

0 人点赞