当前位置: 首页 > news >正文

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常用方法&#xff1a…...

图论---无向图中国邮路的实现

开始编程前分析设计思路和程序的整体的框架,以及作为数学问题的性质: 程序流程图: 数学原理: 本质上是找到一条欧拉回路,考虑图中的边权重、顶点的度数以及如何通过添加最少的额外边来构造欧拉回路,涉及到欧…...

Rockchip RK3588 - Rockchip Linux SDK脚本分析

---------------------------------------------------------------------------------------------------------------------------- 开发板 :ArmSoM-Sige7开发板eMMC :64GBLPDDR4 :8GB 显示屏 :15.6英寸HDMI接口显示屏u-boot &a…...

【C++中resize和reserve的区别】

1. resize的用法 改变当前容器内含有元素的数量&#xff08;size()&#xff09;比如&#xff1a; vector<int> vct;int num vct.size();//之前的元素个数为num vct.resize(len);//现在的元素个数为len如果num < len &#xff0c;那么容器vct新增len - num个元素&am…...

计算机毕业设计Python深度学习游戏推荐系统 Django PySpark游戏可视化 游戏数据分析 游戏爬虫 Scrapy 机器学习 人工智能 大数据毕设

本论文的主要研究内容如下&#xff1a; 了解基于Spark的TapTap游戏数据分析系统的基本架构&#xff0c;掌握系统的开发方法&#xff0c;包括系统开发基本流程、开发环境的搭建、测试与运行等。 主要功能如下&#xff1a; &#xff08;1&#xff09;用户管理模块&#xff1a…...

Python面试题:如何在 Python 中进行正则表达式操作?

在 Python 中&#xff0c;正则表达式操作可以通过 re 模块来实现。以下是一些常用的正则表达式操作和示例&#xff1a; 1. 导入模块 import re2. 常见操作和示例 a. 匹配 使用 re.match() 来检查字符串的开头是否匹配某个模式。 pattern r\d # 匹配一个或多个数字 strin…...

C#面:简述什么是中间件(Middleware)?

中间件是组装到应⽤程序管道中以处理请求和响应的软件。 每个组件&#xff1a; 选择是否将请求传递给管道中的下⼀个组件。 可以在调⽤管道中的下⼀个组件之前和之后执⾏⼯作。 请求委托&#xff08;Request delegates&#xff09;⽤于构建请求管道&#xff0c;处理每个HTTP请…...

AWS Glue 与 Amazon Redshift 的安全通信配置

1. 引言 在 AWS 环境中,确保服务间的安全通信至关重要。本文将探讨 AWS Glue 与 Amazon Redshift 之间的安全通信配置,特别是为什么需要特定的安全组设置,以及如何正确实施这些配置。 2. 背景 AWS Glue:全托管的 ETL(提取、转换、加载)服务Amazon Redshift:快速、完全…...

nginx访问控制

最近部署consul服务&#xff0c;发现consul认证配置比较麻烦&#xff0c;于是上网查询发现nginx支持路由认证&#xff0c;在此做个记录。 1.Nginx访问控制模块类型 基于IP的访问控制&#xff1a;http_access_module基于用户的信任登录&#xff1a;http_auth_basic_module 2.…...

高效应对网络攻击,威胁检测响应(XDR)平台如何提升企业应急响应能力

在数字化时代&#xff0c;企业面临的网络攻击威胁持续增加&#xff0c;如恶意软件、勒索软件、钓鱼攻击、DDoS攻击等。这些威胁不仅危及企业数据安全、系统稳定&#xff0c;还损害了品牌形象和市场信任。随着云计算、大数据、物联网的广泛应用&#xff0c;企业网络攻击面扩大&a…...

多线程问题

什么是线程 线程是cpu调度和执行的单位&#xff0c;一个程序的运行伴随着的是一个进程的执行&#xff0c;而一个进程是由一个或多个线程来完成的&#xff0c;通过cpu调度资源在很短时间切换主线程和子线程并行&#xff0c;交替执行来做到看似多个线程同时进行的状态&#xff0…...

自动优化:SQL Server数据库自动收缩配置指南

自动优化&#xff1a;SQL Server数据库自动收缩配置指南 在数据库管理中&#xff0c;随着数据的增删&#xff0c;数据库文件的大小会不断变化&#xff0c;导致空间浪费和性能下降。SQL Server提供了自动收缩功能&#xff0c;帮助数据库文件保持最佳状态。本文将深入探讨如何在…...

华为机考真题 -- 密码解密

题目描述&#xff1a; 给定一段"密文"字符串 s, 其中字符都是经过"密码本"映射的&#xff0c;现需要将"密文"解密并且输出映射的规则 &#xff08;a - i)分别用(1 - 9)表示&#xff1b;(j - z)分别用(10* - 26*)表示约束&#xff1a;映射始终唯…...

ScrapySharp框架:小红书视频数据采集的API集成与应用

引言 随着大数据时代的到来&#xff0c;数据采集成为了互联网企业获取信息的重要手段。小红书作为一个集社交和电商于一体的平台&#xff0c;其丰富的用户生成内容&#xff08;UGC&#xff09;为数据采集提供了丰富的资源。本文将介绍如何使用ScrapySharp框架进行小红书视频数…...

PostgreSQL 数据库监控项

在维护和优化 PostgreSQL 数据库时&#xff0c;采集并监控数据库的各种静态和动态指标非常重要。这些指标包括数据库的配置信息、资源使用情况、性能指标等&#xff0c;能够帮助数据库管理员及时发现并解决潜在的问题&#xff0c;从而提高数据库的稳定性和性能。本文提供了一系…...

用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 的安装使用

全网最适合入门的面向对象编程教程&#xff1a;13 类和对象的 Python 实现-可视化阅读代码神器 Sourcetrail 的安装使用 摘要&#xff1a; 本文主要介绍了可视化阅读代码神器Sourcetrail的安装与使用&#xff0c;包括软件简介和特性、下载地址、安装方式、新建工程和如何查看…...

Django 视图 - FBV 与 CBV

Django 视图 - FBV 与 CBV 在 Django 框架中&#xff0c;视图是处理 Web 请求和返回 Web 响应的核心组件。Django 提供了两种主要的视图编写方式&#xff1a;函数基础视图&#xff08;Function-Based Views&#xff0c;简称 FBV&#xff09;和类基础视图&#xff08;Class-Bas…...

LiuJuan20260223Zimage v1.0作品集:当传统工笔画遇见AI生成

LiuJuan20260223Zimage v1.0作品集&#xff1a;当传统工笔画遇见AI生成 1. 引言&#xff1a;一次跨越时空的艺术对话 想象一下&#xff0c;你拍了一张现代都市的夜景&#xff0c;或者设计了一张充满未来感的数字海报&#xff0c;然后&#xff0c;你把它交给一位深谙宋元笔法的…...

计算机毕业设计springboot英语学习网站 基于SpringBoot的在线英语教育平台设计与实现 SpringBoot框架下的智能化英语辅助学习系统开发

计算机毕业设计springboot英语学习网站3i8387gp &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。全球化时代对英语能力的需求日益增长&#xff0c;信息技术在教育领域的广泛应用推…...

HunyuanVideo-Foley企业应用:汽车HMI人机交互音效AI生成平台

HunyuanVideo-Foley企业应用&#xff1a;汽车HMI人机交互音效AI生成平台 1. 产品概述 HunyuanVideo-Foley是一款专为企业级音视频生成需求设计的AI平台&#xff0c;特别针对汽车HMI&#xff08;人机交互界面&#xff09;音效场景进行了深度优化。该平台基于RTX 4090D 24GB显存…...

终极Modbus测试工具:OpenModScan让工业通讯调试变得前所未有的简单

终极Modbus测试工具&#xff1a;OpenModScan让工业通讯调试变得前所未有的简单 【免费下载链接】OpenModScan Open ModScan is a Free Modbus Master (Client) Utility 项目地址: https://gitcode.com/gh_mirrors/op/OpenModScan 在工业自动化领域&#xff0c;Modbus协议…...

LeetCode 53. 最大子数组和 超详细题解(贪心+分治+动规)

LeetCode 53. 最大子数组和 超详细题解&#xff08;贪心分治动规&#xff09; &#x1f3f7;️ 标签&#xff1a;动态规划、贪心算法、分治法、数组、经典面试题 &#x1f4ca; 难度&#xff1a;简单 | &#x1f4dd; 题目编号&#xff1a;53 | &#x1f5c2;️ 题型&#xff1…...

Unsloth让AI触手可及:免费GPU+开源框架,训练自己的模型

Unsloth让AI触手可及&#xff1a;免费GPU开源框架&#xff0c;训练自己的模型 1. Unsloth简介&#xff1a;高效微调的开源利器 Unsloth是一个专为大型语言模型(LLM)优化的开源微调框架&#xff0c;它的核心使命是让AI训练变得高效且易于获取。通过创新的技术手段&#xff0c;…...

【NR 定位】3GPP NR Positioning 5G定位标准解读(七):RRC_INACTIVE状态下的高效定位机制

1. RRC_INACTIVE状态下的5G定位挑战与机遇 在5G网络中&#xff0c;RRC_INACTIVE状态是一种独特的节能模式&#xff0c;它允许设备在保持部分网络连接的同时大幅降低功耗。这种状态特别适合物联网设备&#xff0c;比如智能电表、资产追踪器和可穿戴设备。想象一下你家的智能门锁…...

Imaginary跨域资源共享(CORS)终极配置指南:前端图像处理无障碍集成

Imaginary跨域资源共享(CORS)终极配置指南&#xff1a;前端图像处理无障碍集成 【免费下载链接】imaginary Fast, simple, scalable, Docker-ready HTTP microservice for high-level image processing 项目地址: https://gitcode.com/gh_mirrors/im/imaginary Imaginar…...

OpenClaw+百川2-13B-4bits:自媒体人的内容创作流水线搭建

OpenClaw百川2-13B-4bits&#xff1a;自媒体人的内容创作流水线搭建 1. 为什么需要自动化内容流水线 作为一个长期运营科技类自媒体的创作者&#xff0c;我每天需要完成热点追踪、大纲构思、初稿撰写、排版发布等一系列重复性工作。最痛苦的不是写作本身&#xff0c;而是大量…...

用2万小时人类视频预训练机器人,一场豪赌还是必经之路?

先说结论核心验证了“人类数据缩放定律”&#xff1a;在灵巧操作任务上&#xff0c;模型性能随人类预训练数据量对数线性增长&#xff0c;为数据策略提供了可预测的依据。成功的关键在于“两阶段迁移”设计&#xff1a;用大规模、廉价但“嘈杂”的人类数据奠基通用结构&#xf…...