QT QVBoxLayout控件 全面详解

news2025/2/22 20:01:37

         本系列文章全面的介绍了QT中的57种控件的使用方法以及示例,包括 Button(PushButton、toolButton、radioButton、checkBox、commandLinkButton、buttonBox)、Layouts(verticalLayout、horizontalLayout、gridLayout、formLayout)、Spacers(verticalSpacer、horizontalSpacer)、Item Virws (Model-Based)  (listView、treeView、tableView、columnView、undoView) 、DisPlay Widgets(listWidget、treeWidget、tableWidget)、Containers(groupBox、scrollArea、toolBox、tabWidget、stackedWidget、frame、widget、mdiArea、dockWidget、axWidget)、Input Widgets(comboBox、fontComboBox、lineEdit、textEdit、plainTextEdit、spinBox、doubleSpinBox、timeEdit、dateEdit、dateTimeEdit、dial、horizontalScrollBar、verticalScrollBar、horizontalSlider、verticalSlider、keySequenceEdit)、item Widgets(Item-Based) (label、textBrowser、graphicsView、calendarWidget、lcdNumber、progressBar、line、openGLWidget、quickWidget) 界面的自适应界面的开发,控件接口的调用、QSS样式的举例,较为全面且详细的介绍了所有的控件。

        本文详细的介绍了QVBoxLayout控件的各种操作,例如 头文件、创建控件 、创建Layout、添加控件、添加控件伸缩因子、添加间隔和边距、插入控件、移除控件、清空布局、获取控件、设置布局到窗口、.h源代码、cpp源代码、继承关系、系列文章等等操作
        本系列QT全面详解文章目前共有五十七篇,本系列文章较为详细的讲述了QT控件的操作和使用。

选择付费专栏

1.内容全面:常用接口的所有操作 详细举例

2.内容详细:QSS、信号槽 详细举例

3.快速开发:日常开发中所有控件 逐个精通

4.控件全面:QT中所有控件包含其中 全面熟悉

5.内容保障:57种控件全部涵盖其中 内容全面

6.内容质量:QT控件使用详解专栏 质量分>90分, 阅读量超30万+

7.控件精通:全面学习速成 界面大师

8.高效学习:不到一个月精通全部控件

版权声明:本文禁止转载、复制二次发布,仅供付费读者研究 

有相关问题请联系 Dream.2017@qq.com 官方网站 www.dreambegins.vip

QT QVBoxLayout控件 全面详解目录

1 头文件

2 创建控件

3 创建Layout

4 添加控件

5 添加控件伸缩因子

6 添加间隔和边距

7 插入控件

8 移除控件

9 清空布局

10 获取控件

11 设置布局到窗口

12 .h源代码

13 .cpp源代码

14 继承关系

15 系列文章


        QVBoxLayout 是 Qt 中的一个布局管理器,用于将控件垂直排列。它是 QLayout 的子类,专门用于处理控件的垂直布局。使用 QVBoxLayout 可以方便地管理窗口或对话框中的控件,使得界面更加整洁和易于维护。

垂直排列:QVBoxLayout 会将添加到布局中的控件从上到下垂直排列。

自动调整大小:布局会根据窗口的大小自动调整控件的大小和位置,确保控件在窗口中适当显示。

间隔和边距:可以设置控件之间的间隔(spacing)和布局的边距(margins),以控制控件的外观和布局。

伸缩因子:可以为每个控件设置伸缩因子,控制它们在布局中占用的空间比例。伸缩因子越大,控件在可用空间中占用的比例越大。

支持嵌套布局:可以在 QVBoxLayout 中嵌套其他布局(如 QHBoxLayout),以实现更复杂的布局结构。

1 头文件

#include <QVBoxLayout>

2 创建控件

#include <QApplication>
#include <QPushButton>
#include <QVBoxLayout>
#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QDebug>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    // 创建主窗口
    QWidget window;
    window.setWindowTitle("QVBoxLayout Example");
    window.resize(300, 200);

    // 创建 QVBoxLayout
    QVBoxLayout *layout = new QVBoxLayout(&window);

    // 创建控件
    QLabel *label = new QLabel("请输入内容:", &window);
    QLineEdit *lineEdit = new QLineEdit(&window);
    QPushButton *button = new QPushButton("提交", &window);

    // 连接按钮点击信号
    QObject::connect(button, &QPushButton::clicked, [&]() {
        qDebug() << "输入内容:" << lineEdit->text(); // 输出输入的内容
    });

    // 将控件添加到布局中
    layout->addWidget(label);
    layout->addWidget(lineEdit);
    layout->addWidget(button);

    // 设置布局到窗口
    window.setLayout(layout);

    // 显示窗口
    window.show();

    return app.exec();
}

3 创建Layout

QVBoxLayout *layout = new QVBoxLayout(this);

4 添加控件

	QPushButton *button1 = new QPushButton("按钮 1");
	QPushButton *button2 = new QPushButton("按钮 2");
	layout->addWidget(button1);
	layout->addWidget(button2);

5 添加控件伸缩因子

	layout->addWidget(button1, 1); // 伸缩因子为 1
	layout->addWidget(button2, 2); // 伸缩因子为 2,button2 将占用比 button1 更多的空间

6 添加间隔和边距

	layout->setSpacing(10); // 设置控件之间的间隔为 10 像素
	layout->setContentsMargins(15, 15, 15, 15); // 设置布局的边距

7 插入控件

layout->insertWidget(1, new QPushButton("插入按钮")); // 在索引 1 处插入新按钮

8 移除控件

layout->removeWidget(button1); // 从布局中移除 button1

9 清空布局

如果你想清空布局中的所有控件,可以使用 QLayout::deleteLater() 方法。

	//QLayoutItem *item;
	//while ((item = layout->takeAt(0)) != nullptr) {
	//	delete item->widget(); // 删除控件
	//	delete item; // 删除布局项
	//}

10 获取控件

你可以使用 itemAt() 方法获取布局中的控件。

QWidget *widget = layout->itemAt(0)->widget(); // 获取索引 0 处的控件

11 设置布局到窗口

将布局设置为窗口的布局。

	QWidget *window = new QWidget;
	window->setLayout(layout);
	window->show();

12 .h源代码

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_QVerticalLayout.h"

#include <QVBoxLayout>
#include <QPushButton>
#include <QDebug>

#pragma execution_character_set("utf-8")

class QVerticalLayout : public QMainWindow
{
    Q_OBJECT

public:
    QVerticalLayout(QWidget *parent = nullptr);
    ~QVerticalLayout();

private:
    Ui::QVerticalLayoutClass ui;

	QVBoxLayout *layout;
};

13 .cpp源代码

#include "QVerticalLayout.h"

QVerticalLayout::QVerticalLayout(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);

//#include <QApplication>
//#include <QPushButton>
//#include <QVBoxLayout>
//#include <QWidget>
//#include <QLabel>
//#include <QLineEdit>
//#include <QDebug>
//
//	int main(int argc, char *argv[]) {
//		QApplication app(argc, argv);
//
//		// 创建主窗口
//		QWidget window;
//		window.setWindowTitle("QVBoxLayout Example");
//		window.resize(300, 200);
//
//		// 创建 QVBoxLayout
//		QVBoxLayout *layout = new QVBoxLayout(&window);
//
//		// 创建控件
//		QLabel *label = new QLabel("请输入内容:", &window);
//		QLineEdit *lineEdit = new QLineEdit(&window);
//		QPushButton *button = new QPushButton("提交", &window);
//
//		// 连接按钮点击信号
//		QObject::connect(button, &QPushButton::clicked, [&]() {
//			qDebug() << "输入内容:" << lineEdit->text(); // 输出输入的内容
//		});
//
//		// 将控件添加到布局中
//		layout->addWidget(label);
//		layout->addWidget(lineEdit);
//		layout->addWidget(button);
//
//		// 设置布局到窗口
//		window.setLayout(layout);
//
//		// 显示窗口
//		window.show();
//
//		return app.exec();
//	}


	layout = new QVBoxLayout();

	QPushButton *button1 = new QPushButton("按钮 1");
	QPushButton *button2 = new QPushButton("按钮 2");
	layout->addWidget(button1);
	layout->addWidget(button2);


	layout->addWidget(button1, 1); // 伸缩因子为 1
	layout->addWidget(button2, 2); // 伸缩因子为 2,button2 将占用比 button1 更多的空间

	layout->setSpacing(10); // 设置控件之间的间隔为 10 像素
	layout->setContentsMargins(15, 15, 15, 15); // 设置布局的边距

	layout->insertWidget(1, new QPushButton("插入按钮")); // 在索引 1 处插入新按钮

	layout->removeWidget(button1); // 从布局中移除 button1

	//QLayoutItem *item;
	//while ((item = layout->takeAt(0)) != nullptr) {
	//	delete item->widget(); // 删除控件
	//	delete item; // 删除布局项
	//}

	QWidget *widget = layout->itemAt(0)->widget(); // 获取索引 0 处的控件

	QWidget *window = new QWidget;
	window->setLayout(layout);
	window->show();

}

QVerticalLayout::~QVerticalLayout()
{}

14 继承关系

15 相关文章

16 系列文章

ps: 其它说明

希望大家多点点赞,收藏,也希望多评论,指出不足的地方,因为是系列文章所以有不足的地方会整个系列优化,谢谢大家支持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2247131.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

对sklearn库中的鸢尾花数据集内容和结构的详解认识和load_iris()函数查找学习举例

对sklearn库中的鸢尾花数据集内容和结构的详解认识和load_iris()函数查找学习举例 对sklearn库中的鸢尾花数据集内容和结构的详解认识和load_iris函数查找学习举例 对sklearn库中的鸢尾花数据集内容和结构的详解认识和load_iris()函数查找学习举例一、鸢尾花数据位置二、鸢尾花…

动态反馈控制器(DFC)和 服务率控制器(SRC);服务率和到达率简单理解

目录 服务率和到达率简单理解 服务率 到达率 排队论中的应用 论文解析:队列等待成本动态感知控制模型 动态反馈和队列等待成本意识: 服务速率调整算法: 动态反馈控制器(DFC)和 服务率控制器(SRC) SRC公式4的原理 算力资源分配系统中的调整消耗 举例说明 服务…

微信小程序上传微信官方审核流程(1)

1&#xff0c;打开微信开发者工具 2&#xff0c;微信开发者工具右上角有一个上传按钮&#xff0c;点击上传按钮 3&#xff0c;点击完上传按钮会弹出一个上传成功的提示&#xff0c;点击提示框中的确定按钮 4&#xff0c;点击完确定按钮后会显示填写版本好和项目备注 5&#x…

优先算法 —— 双指针系列 - 复写零

目录 1. 复写零 2. 算法原理 一般情况下 改为就地操作&#xff1a;从左到右&#xff08;错误&#xff09; 从右到左 总结一下解决方法&#xff1a; 如何找到最后一个复写的数 特殊情况 完整步骤&#xff1a; 3. 代码 1. 复写零 题目链接&#xff1a;1089. 复写零 - 力…

Spring源码学习(一):Spring初始化入口

写在前面 ​   作为一个刚步入职场的小白&#xff0c;对Spring&#xff08;SpringBoot&#xff09;的了解只停留在会用&#xff0c;并未对其内部的原理有过学习。在公司导师的指导下&#xff0c;开始进一步学习Spring的源码&#xff0c;毕竟Spring源码是Spring全家桶的基础&…

IntelliJ+SpringBoot项目实战(十三)--在SpringBoot中整合Mybatis-plus

mybatis-plus是基于mybatis基础上的增强的持久层框架&#xff0c;也是目前Java项目开发的主流框架。本文介绍在SpringBoot中集成mybtais-plus的方法以及使用mybatis-plus开发增删改查模块。 一、引入mybatis-plus 在openjweb-core工程中引入mybatis-plus依赖: <dependency&…

Vector底层实现详解

一、vector的介绍 vector是表示可变大小数组的序列容器 就像数组一样&#xff0c;vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素 进行访问&#xff0c;和数组一样高效。但是又不像数组&#xff0c;它的大小是可以动态改变的&#xff0c;而且…

【2024 Optimal Control 16-745】【Lecture4】equality-constraints.ipynb功能分析

代码实现了一个二次优化问题的可视化解法&#xff0c;包括目标函数、约束以及优化路径。提供了两种优化方法&#xff1a;牛顿法和高斯-牛顿法&#xff0c;用于对比效果。利用了自动微分工具 ForwardDiff 来计算约束曲率。 环境初始化并导入依赖库 # 激活当前文件夹下的项目环境…

【国产MCU】-GD32F470-串行外设接口(SPI)

串行外设接口(SPI) 文章目录 串行外设接口(SPI)1、SPI介绍1.1 SPI特性1.2 SPI信号1.3 SPI 时序和数据帧格式1.4 NSS 功能1.5 SPI运行模式2、SPI控制器寄存器列表3、SPI控制器驱动API介绍4、SPI应用4.1 SPI初始化流程4.2 数据发送与接收串行外设接口(Serial Peripheral Int…

Docker安装ubuntu1604

首先pull镜像 sudo docker run -d -P m.daocloud.io/docker.io/library/ubuntu:16.04国内使用小技巧&#xff1a; https://github.com/DaoCloud/public-image-mirror pull完成之后查看 sudo docker images 运行docker sudo docker run -d -v /mnt/e:/mnt/e m.daocloud.io/…

2024 年:Kubernetes 包管理的新前沿

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;历代文学&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编程&#xff0c;高并发设计&#xf…

飞凌嵌入式T113-i开发板RISC-V核的实时应用方案

随着市场对嵌入式设备的功能需求越来越高&#xff0c;集成了嵌入式处理器和实时处理器的主控方案日益增多&#xff0c;以便更好地平衡性能与效率——实时核负责高实时性任务&#xff0c;A核处理复杂任务&#xff0c;两核间需实时交换数据。然而在数据传输方面&#xff0c;传统串…

VSCode 汉化教程【简洁易懂】

VSCode【下载】【安装】【汉化】【配置C环境&#xff08;超快&#xff09;】&#xff08;Windows环境&#xff09;-CSDN博客 我们安装完成后默认是英文界面。 找到插件选项卡&#xff0c;搜索“Chinese”&#xff0c;找到简体&#xff08;更具你的需要&#xff09;&#xff08;…

【Mac】VMware Fusion Pro 安装 CentOS 7

1、下载镜像 CentOS 官网阿里云镜像网易镜像搜狐镜像 Mac M1芯片无法直接使用上述地址下载的最新镜像&#xff08;7.9、9&#xff09;&#xff0c;会一直卡在安装界面&#xff08;在 install 界面按 enter 回车无效&#xff09;&#xff0c;想要使用需要经过一系列操作&#…

运维Tips:Docker或K8s集群拉取Harbor私有容器镜像仓库配置指南

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ] Docker与Kubernetes集群拉取Harbor私有容器镜像仓库配置 描述&#xff1a;在现在微服务、云原生的环境下&#xff0c;通常我们会在企业中部署Docker和Kubernetes集群&#xff0c;并且会在企业内部…

C语言笔记(自定义类型:结构体、枚举、联合体 )

前言 本文对自定义类型的结构体创建、使用、结构体的存储方式和对齐方式&#xff0c;枚举的定义、使用方式以及联合体的定义、使用和存储方式展开叙述&#xff0c;如有错误&#xff0c;请各位指正。 目录 前言 1 结构体 1.1 结构体的声明 1.2 结构体的自引用 1.3 结构体变…

string的实际应用 -- 大数相加 、大数相乘

前言&#xff1a;哎&#xff0c;做题好难o(╥﹏╥)o&#xff0c;有时候想不到&#xff0c;而有时候则是想到了却没办法理清思路&#xff0c;转化为代码。有必要反思了┓(;_&#xff40;)┏&#xff0c;是否是做的太少了&#xff0c;或是自己的基础欠缺。 大学总是有些迷茫~ ​​…

STM32-- keil 的option for target使用

keil版本号 1.device界面 如&#xff1a;stm32f103c8t6的工程&#xff0c;可以直接在device这里修改成stm32f103vct6&#xff0c;虽然引脚不一样&#xff0c;但是很多一样的地方&#xff0c;可以直接使用&#xff0c;有些不修改也可以下载程序。 2.target xtal的设置不起作用了…

shell脚本9完结,保姆篇---春不晚

免责声明 学习视频来自 B 站up主泷羽sec&#xff0c;如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识&#xff0c;以下代码、网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 泷羽sec官网&#xff1a;http…

【数据分享】2024年我国省市县三级的住宿服务设施数量(8类住宿设施/Excel/Shp格式)

宾馆酒店、旅馆招待所等住宿服务设施的配置情况是一个城市公共基础设施完善程度的重要体现&#xff0c;一个城市住宿服务设施种类越丰富&#xff0c;数量越多&#xff0c;通常能表示这个城市的公共服务水平越高&#xff01; 本次我们为大家带来的是我国各省份、各地级市、各区…