QHBoxLayout和QVBoxLayout

QHBoxLayout和QVBoxLayoutQHBoxLayout和QVBoxLayout学习QT到现在,我个人觉得QT挺好学的、也挺难的。好学是因为QT所用的都是类,操作的都是类对象,难呢,是因为都是类,有一些类还需要我们自己去定义、去继承、去重写,我感觉都是一点难点。因为需要理解知道其他的类才可以继承使用。现在我们先看一下我们最常用的类,我学习到目前为止,基本每一个项目都会用到的类QHBoxLayout和QVBoxLayout,两个…

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

QHBoxLayout和QVBoxLayout

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

#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:

#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);
}

那么结果也是我们想象中的一样,垂直布局,
在这里插入图片描述

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

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.net/149024.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月16日 下午2:16
下一篇 2022年6月16日 下午2:16


相关推荐

  • 数据库表设计之用户权限表[通俗易懂]

    数据库表设计之用户权限表[通俗易懂]需求分析1、管理员给用户分配权限,权限数据写到数据库中。2、认证服务在进行用户认证时从数据库读取用户的权限数据(动态数据)user:用户表,存储了系统用户信息,用户类型包括:学生、老师、管理员等role:角色表,存储了系统的角色信息,学生、老师、教学管理员、系统管理员等user_role:用户角色表,一个用户可拥有多个角色,一个角色可被多个用户所拥有menu:记录了菜单及菜单下的权限role_permission:角色权限表,一个角色可拥有多个权限,一个权限可被多个角色所拥有…

    2026年4月17日
    5
  • php导出excel表格_phpspreadsheet导出

    php导出excel表格_phpspreadsheet导出Spout是一个PHP库,可以快速,可扩展的方式读写电子表格文件(CSV,XLSX和ODS)。与其他文件读写器相反,它能够处理非常大的文件,同时保持内存使用率非常低。phpspreadsheet是phpexcel的下一个版本。它打破了兼容性,大大提高了代码基础质量(名称空间、PSR兼容性、使用最新的PHP语言功能等)。因为所有的努力都转移到了phpspreadsheet,phpexcel将不……………

    2025年12月11日
    3
  • CAN转以太网设备实现can报文与tcp/udp报文之间的高效低延时转换

    CAN转以太网设备实现can报文与tcp/udp报文之间的高效低延时转换LCNET 系列工业级 CAN 转以太网设备提供一路 10 100M 以太网通道 RJ45 和 1 2 路 CAN 通道 实现 CAN 网络与 IP 网络之间的互联互通 支持 TCPServer TCPClient 和 UDP 工作模式 IP 地址 端口 CAN 波特率 分包帧数 分包时间间隔等均可设置 这里进行 CAN 转以太网设备双向高效转发演示 测试示例的参数设置 UDP 模式 CAN 波特率 500Kbps 分包帧数为 1 即接收到一个 CAN 帧就封装成一个 UDP 报文发送到网络中 分包时间间隔为 0 即为 7 8 个 CAN 帧连续发送所需的

    2025年11月16日
    5
  • 解锁AI Agent潜能:基于Langchain组件库的落地指南(1)

    解锁AI Agent潜能:基于Langchain组件库的落地指南(1)

    2026年3月14日
    2
  • java初级求职简历,初级Java软件工程师求职简历范文[通俗易懂]

    求职目标:Java软件工程师姓名:张XX年龄:24岁住址:北京市朝阳区电话:135xxxxxxxx邮箱:lucky@ijianli.com教育背景2013.09-至今??XXXXX大学??通信工程(本科)主修课程:电路理论基础、电子线路(线性与非线性)、电磁场理论、数字图像处理、数字系统与逻辑设计、单片机原理及其接口技术、信号与线性系统、数字信号处理、微机原理与测控技术、计算机网络与数据…

    2022年4月10日
    54
  • FileStream常用的属性和方法:

    FileStream常用的属性和方法:对流进行操作时要引用usingSystem.IO;命名空间FileStream常用的属性和方法:属性:CanRead判断当前流是否支持读取,返回bool值,True表示可以读取CanWrite判断当前流是否支持写入,返回bool值,True表示可以写入方法:Read()从流中读取数据,返回字节数组Write()将字节块(字节数组)写入该流Seek…

    2022年7月24日
    12

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号