Qt:15.布局管理器(QVBoxLayout-垂直布局、QHBoxLayout-水平布局、QGridLayout-网格布局、拉伸系数,控制控件显示的大小)
目录
一、QVBoxLayout-垂直布局:
1.1QVBoxLayout介绍:
1.2 属性介绍:
1.3细节理解:
二、QHBoxLayout-水平布局:
三、QGridLayout-网格布局:
3.1QGridLayout介绍:
3.2常用方法:
四、拉伸系数,控制控件显示的大小:
4.1拉伸系数介绍:
4.2水平拉伸-控件的宽度:
4.3控件的大小策略:
4.4垂直拉伸-控件的高度:
一、QVBoxLayout-垂直布局:
1.1QVBoxLayout介绍:
- QVBoxLayout 是Qt中的一个布局管理器。
- 用于将子控件垂直排列。它会自动调整子控件的大小和位置,使它们在垂直方向上依次排列,占据可用的空间。
- 将控件添加到布局管理器:layout->addWidget(控件名);
- 将布局管理器挂到对象树:this->setLayout(layout_1);
- 将布局管理器添加到布局管理器:layout_1->addLayout(layout_2);
1.2 属性介绍:
layoutLeftMargin
- 设置布局左侧的边距。
- 获取当前左边距:layout->contentsMargins().left()
layoutTopMargin
- 设置布局顶部的边距。
- 获取当前顶部边距:layout->contentsMargins().top()
layoutRightMargin
- 设置布局右侧的边距。
- 获取当前右边距:layout->contentsMargins().right()
layoutBottomMargin
- 设置布局底部的边距。
- 获取当前底部边距:layout->contentsMargins().bottom()
layoutSpacing
- 设置子控件之间的间距。
- 获取当前间距:layout->spacing()
- 设置间距:layout->setSpacing(spacing)
layoutStretch
- 设置子控件的伸缩因子。
- 设置伸缩因子:layout->setStretch(index, stretch)
- 获取当前伸缩因子:layout->stretch(index)
layoutSizeConstraint
- 设置布局的尺寸约束。
- 获取当前尺寸约束:layout->sizeConstraint()
- 设置尺寸约束:layout->setSizeConstraint(constraint)
1.3细节理解:
- 一个Widget只能创建一个布局管理器。
- 通过代码创建的布局管理器,调整窗口的大小,里面的控件也会随之拉伸。
- 通过ui界面可以创建多个布局管理器,但是创建多余一个的布局管理器前,会先创建一个Widget,此时拉申程序的窗口,控件不会随着伸缩。
二、QHBoxLayout-水平布局:
- QHBoxLayout 是Qt中的一个布局管理器。
- 用于将子控件水平排列。它会自动调整子控件的大小和位置,使它们在水平方向上依次排列,占据可用的空间。
- 属性和垂直布局相同。
三、QGridLayout-网格布局:
3.1QGridLayout介绍:
- QGridLayout 是 Qt 中的一种布局管理器,用于在网格中排列子控件。它允许在特定的行和列中添加控件或其他布局。
3.2常用方法:
void addLayout(QLayout *layout, int row, int column)
- 将子布局添加到特定位置
- layout:要添加的子布局。
- row:子布局所在的行。
- column:子布局所在的列。
void addLayout(QLayout *layout, int row, int column, int rowSpan, int columnSpan)
- 将子布局添加到特定位置,并指定行跨度和列跨度
- layout:要添加的子布局。
- row:子布局起始行。
- column:子布局起始列。
- rowSpan:子布局占用的行数。
- columnSpan:子布局占用的列数。
四、拉伸系数,控制控件显示的大小:
4.1拉伸系数介绍:
- 通过代码创建的控件,将它添加到布局管理器后,他们的大小是均等的。
- 如果要创建出大小不同的控件,就需要通过拉伸系数设置控件。
- 拉伸系数就相当于设置控件之间的比例。
4.2水平拉伸-控件的宽度:
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//创建6个按钮QPushButton* b1=new QPushButton("1");QPushButton* b2=new QPushButton("2");QPushButton* b3=new QPushButton("3");QPushButton* b4=new QPushButton("4");QPushButton* b5=new QPushButton("5");QPushButton* b6=new QPushButton("6");//创建一个网格布局控制器,并将6个按钮分为两行,每行三个QGridLayout* layout=new QGridLayout();layout->addWidget(b1,0,0);layout->addWidget(b2,0,1);layout->addWidget(b3,0,2);layout->addWidget(b4,1,0);layout->addWidget(b5,1,1);layout->addWidget(b6,1,2);//设置拉伸系数this->setLayout(layout);layout->setColumnStretch(0,1);layout->setColumnStretch(1,3);layout->setColumnStretch(2,5);}
- 如果将拉伸系数设为0,那么对应列的控件的水平宽度是一个固定值,不再参与比例拉伸。
- 设置水平拉伸因子:layout->setColumnStretch(column,stretch);
4.3控件的大小策略:
- 在 Qt 中,控件的大小策略(QSizePolicy)定义了控件在布局管理器中的行为方式,包括如何在水平和垂直方向上拉伸和收缩。默认情况下,控件的 QSizePolicy 会影响它们在布局中的拉伸和缩放行为。
- 每个控件在创建时都有一个默认的 QSizePolicy。QSizePolicy 包含两个主要属性:水平策略和垂直策略。
- 不同控件可能有不同的默认策略。
- QSizePolicy 主要有以下几种常见的策略:
- QSizePolicy::Fixed:控件的大小是固定的,不会改变。
- QSizePolicy::Minimum:控件可以收缩到比推荐的大小更小,但不会拉伸。
- QSizePolicy::Maximum:控件可以拉伸到比推荐的大小更大,但不会收缩。
- QSizePolicy::Preferred:控件会根据其推荐的大小进行调整,但可以在必要时拉伸或收
- 缩。
- QSizePolicy::Expanding:控件会尽可能地拉伸以填充可用空间。
- QSizePolicy::Ignored:控件的大小不受其内容或推荐大小的影响,可以任意调整。
4.4垂直拉伸-控件的高度:
- label的水平拉伸默认策略为QSizePolicy::Expanding,但是他的垂直拉伸的默认策略是QSizePolicy::Fixed。
- 如果想要和水平拉伸一样自由拉伸,就要手动设置label的拉伸策略为QSizePolicy::Expanding。
- 下面通过两个图片对比设置拉伸策略后的差异:
- 当垂直方向可以自由拉伸之后。就可以设置比例拉伸了。
- 设置垂直拉伸因子:layout->setRowStretch(column,stretch);
相关文章:
Qt:15.布局管理器(QVBoxLayout-垂直布局、QHBoxLayout-水平布局、QGridLayout-网格布局、拉伸系数,控制控件显示的大小)
目录 一、QVBoxLayout-垂直布局: 1.1QVBoxLayout介绍: 1.2 属性介绍: 1.3细节理解: 二、QHBoxLayout-水平布局: 三、QGridLayout-网格布局: 3.1QGridLayout介绍: 3.2常用方法:…...
图论---无向图中国邮路的实现
开始编程前分析设计思路和程序的整体的框架,以及作为数学问题的性质: 程序流程图: 数学原理: 本质上是找到一条欧拉回路,考虑图中的边权重、顶点的度数以及如何通过添加最少的额外边来构造欧拉回路,涉及到欧…...
Rockchip RK3588 - Rockchip Linux SDK脚本分析
---------------------------------------------------------------------------------------------------------------------------- 开发板 :ArmSoM-Sige7开发板eMMC :64GBLPDDR4 :8GB 显示屏 :15.6英寸HDMI接口显示屏u-boot &a…...
【C++中resize和reserve的区别】
1. resize的用法 改变当前容器内含有元素的数量(size())比如: vector<int> vct;int num vct.size();//之前的元素个数为num vct.resize(len);//现在的元素个数为len如果num < len ,那么容器vct新增len - num个元素&am…...
计算机毕业设计Python深度学习游戏推荐系统 Django PySpark游戏可视化 游戏数据分析 游戏爬虫 Scrapy 机器学习 人工智能 大数据毕设
本论文的主要研究内容如下: 了解基于Spark的TapTap游戏数据分析系统的基本架构,掌握系统的开发方法,包括系统开发基本流程、开发环境的搭建、测试与运行等。 主要功能如下: (1)用户管理模块:…...
Python面试题:如何在 Python 中进行正则表达式操作?
在 Python 中,正则表达式操作可以通过 re 模块来实现。以下是一些常用的正则表达式操作和示例: 1. 导入模块 import re2. 常见操作和示例 a. 匹配 使用 re.match() 来检查字符串的开头是否匹配某个模式。 pattern r\d # 匹配一个或多个数字 strin…...
C#面:简述什么是中间件(Middleware)?
中间件是组装到应⽤程序管道中以处理请求和响应的软件。 每个组件: 选择是否将请求传递给管道中的下⼀个组件。 可以在调⽤管道中的下⼀个组件之前和之后执⾏⼯作。 请求委托(Request delegates)⽤于构建请求管道,处理每个HTTP请…...
AWS Glue 与 Amazon Redshift 的安全通信配置
1. 引言 在 AWS 环境中,确保服务间的安全通信至关重要。本文将探讨 AWS Glue 与 Amazon Redshift 之间的安全通信配置,特别是为什么需要特定的安全组设置,以及如何正确实施这些配置。 2. 背景 AWS Glue:全托管的 ETL(提取、转换、加载)服务Amazon Redshift:快速、完全…...
nginx访问控制
最近部署consul服务,发现consul认证配置比较麻烦,于是上网查询发现nginx支持路由认证,在此做个记录。 1.Nginx访问控制模块类型 基于IP的访问控制:http_access_module基于用户的信任登录:http_auth_basic_module 2.…...
高效应对网络攻击,威胁检测响应(XDR)平台如何提升企业应急响应能力
在数字化时代,企业面临的网络攻击威胁持续增加,如恶意软件、勒索软件、钓鱼攻击、DDoS攻击等。这些威胁不仅危及企业数据安全、系统稳定,还损害了品牌形象和市场信任。随着云计算、大数据、物联网的广泛应用,企业网络攻击面扩大&a…...
多线程问题
什么是线程 线程是cpu调度和执行的单位,一个程序的运行伴随着的是一个进程的执行,而一个进程是由一个或多个线程来完成的,通过cpu调度资源在很短时间切换主线程和子线程并行,交替执行来做到看似多个线程同时进行的状态࿰…...
自动优化:SQL Server数据库自动收缩配置指南
自动优化:SQL Server数据库自动收缩配置指南 在数据库管理中,随着数据的增删,数据库文件的大小会不断变化,导致空间浪费和性能下降。SQL Server提供了自动收缩功能,帮助数据库文件保持最佳状态。本文将深入探讨如何在…...
华为机考真题 -- 密码解密
题目描述: 给定一段"密文"字符串 s, 其中字符都是经过"密码本"映射的,现需要将"密文"解密并且输出映射的规则 (a - i)分别用(1 - 9)表示;(j - z)分别用(10* - 26*)表示约束:映射始终唯…...
ScrapySharp框架:小红书视频数据采集的API集成与应用
引言 随着大数据时代的到来,数据采集成为了互联网企业获取信息的重要手段。小红书作为一个集社交和电商于一体的平台,其丰富的用户生成内容(UGC)为数据采集提供了丰富的资源。本文将介绍如何使用ScrapySharp框架进行小红书视频数…...
PostgreSQL 数据库监控项
在维护和优化 PostgreSQL 数据库时,采集并监控数据库的各种静态和动态指标非常重要。这些指标包括数据库的配置信息、资源使用情况、性能指标等,能够帮助数据库管理员及时发现并解决潜在的问题,从而提高数据库的稳定性和性能。本文提供了一系…...
用python生成词频云图(python实例二十一)
目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.词频云图 3.1 代码构思 3.2 代码实例 3.3 运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性&a…...
HTML 标签简写和全称及其对应的中文说明和实例
<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>HTML 标签简写及全称</title><style>…...
(2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
前言 本系列最初的想法就是搭建一个多项目的环境, 包含nginx, nodejs, php, html, redis, MongoDB, mysql.本文使用的PHP镜像为php:7.3.6-apache, 这里可以使用上一篇文章中生成好的镜像.LAMP或包含react或vue的前端项目, 本文就各写了一个, 可以按照实际需求, 自行添加多个容…...
全网最适合入门的面向对象编程教程:13 类和对象的 Python 实现-可视化阅读代码神器 Sourcetrail 的安装使用
全网最适合入门的面向对象编程教程:13 类和对象的 Python 实现-可视化阅读代码神器 Sourcetrail 的安装使用 摘要: 本文主要介绍了可视化阅读代码神器Sourcetrail的安装与使用,包括软件简介和特性、下载地址、安装方式、新建工程和如何查看…...
Django 视图 - FBV 与 CBV
Django 视图 - FBV 与 CBV 在 Django 框架中,视图是处理 Web 请求和返回 Web 响应的核心组件。Django 提供了两种主要的视图编写方式:函数基础视图(Function-Based Views,简称 FBV)和类基础视图(Class-Bas…...
AI机器人在未来的应用场景预测:是否会取代人类?华为、百度、特斯拉他们在AI领域都在做什么?
引言 随着人工智能(AI)技术的飞速发展,AI机器人在各个领域的应用变得越来越普遍。从工业自动化到日常生活,AI机器人已经开始展现出强大的潜力和实际应用价值。本文将深入探讨AI机器人在未来的应用场景,并分析它们是否…...
第58期 | GPTSecurity周报
GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…...
maven 依赖冲突
依赖冲突 1、对于 Maven 而言,同一个 groupId 同一个 artifactId 下,只能使用一个 version。 <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 --><dependency><groupId>org.apache.commons</groupId&…...
demon drone 200无人机标定流程
demon drone 200无人机标定流程 一、飞控固件更新1.1 固件更新1.2 参数更新 二、imu标定2.1 安装imu标定工具(在你自己的电脑上)2.2 录制rosbag(在对应飞机上)2.3 运行标定程序(在你自己的电脑上) 三、双目及imu联合标定3.1 安装标…...
案例开发-日程管理-第一期
九 案例开发-日程管理-第一期 共7期 9.1 登录页及校验 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>.ht{text-align: center;color: cadetblue;font-family: 幼…...
【Java 注解,自定义注解,元注解,注解本质,注解解析】
文章目录 什么是注解?Java内置注解自定义注解元注解注解的本质注解解析 什么是注解? 注解是Java编程语言中的一种元数据,提供了有关程序的额外信息。注解以符号开始,紧跟着注解的名称和一对括号,括号内包含注解的参数…...
染色法判定二分图
什么是二分图? 二分图,也称作二部图,是图论中的一种特殊模型。在一个无向图G(V,E) 中,如果顶点集合 V 可以被分割成两个互不相交的子集 A 和 B,并且图中的每条边 (i,j) 关联的两个顶点 i 和 j 分别属于这两个不同的顶…...
自动气象站的主要功能优势
在科技日新月异的今天,我们生活的方方面面都受到了科技的影响。其中,自动气象站作为气象观测领域的重要一环,不仅提升了气象数据的准确性和时效性,还为我们的日常生活、农业生产、灾害预防等提供了重要的数据支持。 自动气象站概述…...
Java中实现二维数组(矩阵)的转置
在矩阵运算中,矩阵的转置是一个基本操作,即将矩阵的行变成列,列变成行。在Java中,我们可以通过编写一个方法来实现二维数组的转置。下面,我将详细介绍如何在Java中完成这一任务,并提供完整的代码示例。 编…...
Prometheus+Grafana主机运行数据
目录 介绍 安装Node Exporter 配置Prometheus 验证配置 导入仪表盘 介绍 Prometheus是一款开源的监控和警报工具,而Node Exporter是Prometheus的一个官方插件,用于采集主机上的各种系统和硬件指标。 安装Node Exporter 下载最新版本的Node Export…...
徐州市网站建设/推广哪个app最挣钱
chmod [权限值] [文件名] 更改文件或目录的使用权限 UNIX 系统对每一个文件或目录都记录有9个权限的属性值,前面3个是“所有者”的“读权限”、“写权限”、“执行权”,接着3个是“同一用户组的人”的“读权限”、“写权限”、“执行权”,最后…...
图书馆登录系统网站建设代码/接单平台app
1. Mantle Mantle 让我们能简化 Cocoa 和 Cocoa Touch 应用的 model 层。简单点说,程序中经常要进行网络请求,请求到得一般是 json 字符串,我们一般会建一个 Model 类来存放这些数据。这就要求我们编写一系列的序列化代码,来把 js…...
阳曲网站建设推荐咨询/免费的seo网站
原文链接:http://blog.csdn.net/only_wan/article/details/52975760 mvn 创建时在generating project in interactive mode卡住了,怎么解决? 从图中可以看出,为啥卡在generating project in interactive mode, 因为请求…...
做网站推广的方法有哪些/java培训班
案例介绍: 我们在日常生活中,经常与朋友们玩猜数字的游戏,非常的有趣。现在我们通过java把这个猜数字游戏编写出来。 猜数字案例是要完成什么样的功能呢?顾名思义,这个游戏就是你出个数字、我来猜。 游戏操作如下&…...
免费网站重生做军嫂/网站开发流程有哪几个阶段
前言:C#语言是由微软公司开发面向大众的一款软件开发语言。 1.c语音的输出语句为Console.Write();和Console.WriteLine(); 两者区别为后者为换行输出,前者不换行。 2.在C#语言中一般是使用vs开发工具,目前最高版本为2015版本, 他的…...
杭州网站制作/榆林百度seo
自然界的颜色千变万化,为了给颜色一个量化的衡量标准,就需要建立色彩空间模型来描述各种各样的颜色,由于人对色彩的感知是一个复杂的生理和心理联合作用 的过程,所以在不同的应用领域中为了更好更准确的满足各自的需求,就出现了各种各样的色彩空间模型来量化的描述颜色。我…...