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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • hadoop入门教程列表

    hadoop入门教程列表最近也在看hadoop,搜集了一些入门的教程。感觉不错。写在这里分享下。1、从安装到实例以及基本的原理都有涉及:虾虾皮hadoop系列入门。2、一份不错的单节点hadoop搭建环境以及运行WordCount的教程:running-hadoop-on-ubuntu-linux-single-node-cluster 。3、Eclipse远程编译运

    2022年6月9日
    31
  • 树莓派开发环境搭建(树莓派5)

    在本系列文章的第一部分中,我们将在一台树莓派Pi3ModelB上安装并运行一个以太坊区块链客户端。毫无疑问,区块链绝对是当前的热点。之所以会这样,很大程度上是因为比特币以及其他加密货币让很多人一夜暴富。但是,区块链的应用并不仅限于加密货币领域,考虑到其去中心化以及防篡改等特性,区块链技术还可以用到IoT应用中。因此,除了加密货币和安全交易之外,以太坊平台还可以提供一种分布式的计算平台。在这篇…

    2022年4月12日
    179
  • windows route命令[通俗易懂]

    windows route命令[通俗易懂]命令:routeprint:打印当前的路由表routedelete:删除一条路由routeadd:增加一条路由,如果最后加上–p选项,表示永久增加静态路由,重启后不会失效routechange:更改一条路由例:routeCHANGE157.0.0.0MASK255.0.0.0157.55.80.5METRIC2IF2CHANGE只用于修改网关和/或跃点数。具体场景:一台电脑通过双网卡,同时连接内网与外网.内网地址10.0.

    2022年7月18日
    198
  • Kafka集群搭建 以及命令「建议收藏」

    Kafka集群搭建 以及命令「建议收藏」好久没有写博客了有点懒赶紧补一下Kafka集群搭建测试机三个节点hadoop1hadoop2hadoop3这三个节点安装了独立的zookeeper且我其他hadoophbase等元数据信息都在上面我不用Kafka自带的zookeeper本次的版本是:/kafka_2.10-0.10.0.1修改配置:kafka_2.10-0.10.0.1/conf

    2022年6月9日
    39
  • 8000401a 错误及解决办法「建议收藏」

    8000401a 错误及解决办法「建议收藏」将web程序部署到服务器上时,偶尔会遇到下面的错误:System.Runtime.InteropServices.COMException(0x8000401A):检索COM类工厂中CLSID为{91493441-5A91-11CF-8700-00AA0060263B}的组件时失败,原因是出现以下错误:8000401a。在MSOfficeDocUtils.Powe…

    2022年7月25日
    4
  • post请求406,not acceptable问题[通俗易懂]

    最近在做一个项目,发现自己从ajax发送请求后返回的json数据接收不到,后台没有报错,经测试ajax的seccess内代码没有走,打开浏览器控制台一看,报错post:406not acceptable,接收后台传输过来响应的type为text/html。上网查找类似问题,总结如下:1、@responsebody标签没有加。那么返回的内容会经过视图解析器,加上标签后返回的数据会直接写入到…

    2022年4月9日
    57

发表回复

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

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