【Qt】容器控件、布局管理控件

news2025/1/2 21:50:41

目录

容器控件

QGroupBox

QTabWidget

布局管理控件

QVBoxLayout

例子:

QHBoxLayout

例子:

QGridLayout

例子:

例子:

 QFormLayout

例子:

QSpacerItem

例子:


容器控件

QGroupBox

表示一个带有标题的分组框。可以把其他的控件放到一个分组框里,用来美化界面。

核心属性:

title:分组框的标题。

alignment:分组框内部内容的对齐方式。

flat:边框是否是扁平模式。

checkable:是否可选择。如果设为true在分组框title处会出现一个可勾选框。

checked:是否被选中,checkable为true是前提。

例子:

当设置分组框的checkable为true,就会有一个可勾选框,若不勾选该对勾则该分组框中的控件都不可用。

注意:当将复制的分组框粘贴到父控件QWidget中时,要选中父控件QWidget窗口再粘贴(意思就是将复制的分组框粘贴到父控件QWidget中),否则会将复制的分组框粘贴到原来的分组框中。

QTabWidget

表示一个可以有多个标签页(可以相互切换),每个标签页中可以有多个控件。

核心属性:

tabPosition:标签的位置。

North:上方。South:下方。West:左侧。East:右侧。

currentIndex:当前选中的标签页的下标。(下标从0计算)

currentTabText:当前选中标签页的的文本。

currentTableName:当前选中标签页的名字。

currentTableIcon:当前选中标签页的图标。

tabsClosable:标签页是否可以被关闭。

moveable:标签页是否可以被移动。

核心信号:

例子:

点击按钮增加标签页,并且当前选中的标签页为新增的标签页;删除选中的标签页。

布局管理控件

之前我们在窗口上创建的控件都是固定在窗口界面上的,窗口界面的尺寸可以通过拖拽的方式变化,这些创建的控件不能自适应窗口界面的变化,当界面上有很多控件时就不好我们进行自己计算这些控件在界面上的位置,因此就有了布局管理控件。每个布局管理控件中可以有多个控件。

注意:

1.通过代码创建布局控件。(只能创建一个布局管理控件,且布局管理控件中的控件尺寸可以自适应界面的尺寸变化)  

2.通过Qt Designer创建布局管理控件。(可以创建多个布局管理控件,但是布局管理控件中的控件不能自适应界面的尺寸变化)

qt提供了如下几种布局管理策略:

垂直布局、水平布局、网格布局、表单布局

QVBoxLayout

垂直布局管理控件

核心属性:

layoutLeftMargin:左侧边距(相对于布局管理控件的边距)

layoutRightMargin:右侧边距。

layoutTopMargin:上方边距。

layoutBottomMargin:下方边距。

layoutSpacing:垂直布局中控件之间的边距。

例子:

使用代码方式创建布局管理控件和使用Qt Designer创建,分析这两种方法的区别。

使用代码方式创建:

这种方法只能创建一个布局管理控件,且布局管理控件中的控件可以自适应界面的尺寸变化。

使用Qt Designer创建:

对应的widget.ui文件中的xml内容:

注意:

从widget.ui文件中我们可以看到使用Qt Designer创建布局管理控件时会创建一个QWidget然后这个QWidget中嵌套了布局管理控件,实际上一个QWidget中只能有一个布局管理控件,如果要创建多个布局管理控件时就必须有多个QWidget。

 

QHBoxLayout

水平布局管理控件

核心属性:

和上面的QVBoxLayout属性一样。

例子:

在一个水平布局控件中嵌套垂直布局。

QGridLayout

网格布局控件。可以实现n*m网格的效果。

grid:网格。

核心属性:

上,下,左,右四个方向的边距属性和QVBoxLayout,QHBoxLayout一样,不同的属性说元素间的距离。

layoutHorizontalSpacing:水平方向元素间的距离。

layoutVerticalSpacing:垂直方向元素间的距离。

layoutRowStretch:行方向拉伸系数。

layoutColumnStretch:列方向拉伸系数。

例子:

 

注意:即使将按钮3的位置设置为第90行第90列,按钮三仍然再按钮2后。在addWidget中设置的行数和列数其实是为了决定布局控件中控件之间的相对位置。

例子:

布局控件中控件的拉伸,必须是以整行或整列拉伸。

1.布局控件中的控件宽度拉伸,对整列控件拉伸。

column:表示要拉伸那一列的控件。

stretch:表示拉伸值。当窗口界面尺寸发生改变时,不同列控件的宽度比例就会依据设置的列的拉伸系数调整,当某列的拉伸系数为0,不管窗口界面尺寸如何变化该列的控件的宽度保持不变。

2.布局控件中的控件高度拉伸,对整行控件拉伸。

注意:由于按钮控件的高度默认是不能拉伸的(宽度默认是可以拉伸的),直接通过setRowStretch方法设置拉伸系数是无法拉伸某行按钮控件的高度,必须要将按钮控件的尺寸策略设置为QSizePolicy::Expanding

 该方法的参数类型是枚举类型QSizePolicy::Policy

QSizePolicy::Expanding:控件的尺寸可以根据空间调整,尽可能的占据更多空间。

 QFormLayout

表单布局控件。专门用于设计两列表单的布局,这种表单布局多用于用户填写信息的场景,左侧列为提示(标签控件),右侧列为输入框。

例子:

向表单控件中添加行的方法:

QSpacerItem

在使用布局管理控件的时候可能需要在控件之间添加空白隔开控件,此时就需要QSpacerItem

例子:

在QHBoxLayout中添加一个QSpacerItem隔开两个按钮控件。

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

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

相关文章

计算机的错误计算(一百九十六)

摘要 用两个大模型计算 arccos(0.444). 结果保留 4位有效数字。两个大模型的计算结果相同,并均有误差。 例1. 计算 arccos(0.444). 结果保留 4位有效数字。 下面是与一个大模型的对话。 以上为与一大模型的对话。 下面是与另一大模型的对话。 点评: &…

Unity开发微信小游戏踩坑总结

前言 不记录真记不住,这个帖子以后不定时更新。 问题1:图片模糊 问题描述: 在Unity里什么事没有,进入到微信开发者工具里就已经模糊了,人物动画是一团马赛克,图片看着倒是没事。 问题原因:…

Python爬虫教程——7个爬虫小案例(附源码)_爬虫实例

本文介绍了7个Python爬虫小案例,包括爬取豆瓣电影Top250、猫眼电影Top100、全国高校名单、中国天气网、当当网图书、糗事百科段子和新浪微博信息,帮助读者理解并实践Python爬虫基础知识。 包含编程资料、学习路线图、源代码、软件安装包等!【…

kafka小实站

需要先在前面的文章里面照着下载好kafka,并且启动 先启动zookeeper 项目目录 package kafka; import lombok.extern.slf4j.Slf4j; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.kafka.annotation.KafkaListener; import…

【从零开始入门unity游戏开发之——C#篇39】C#反射使用——Type 类、Assembly 类、Activator 类操作程序集

文章目录 前言一、前置知识1、编译器2、程序集(Assembly)3、元数据(Metadata) 二、反射1、反射的概念2、反射的作用3、反射的核心Type 类3.1 Type 类介绍3.2 不同方法获取 Type3.3 获取type类型所在的程序集的相关信息 4、反射的常…

(桌面运维学习)通过备份C盘,进行Windows系统的软件初始化

通过PE工具备份C盘,进行Windows系统的软件初始化 需求场景:快速初始化一批型号和主板一样的电脑系统型号也要一致(Win10专业版就最好全是WIn10专业版),初始化的内容包括已配置好的环境和已安装的软件。主要用于公司桌面…

【ELK】ES单节点升级为集群模式--太细了!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言准备工作1. 查看现状【单节点】2. 原节点改集群模式3. 改es配置文件,增加集群相关配置项4. *改docker映射的端口* 启动新节点5. docker-compose起一…

Path-of-Thoughts:将“思维链“升级为“思维图“,三阶段框架取代单一推理,提升大模型复杂关系推理准确性至88.2%与效率提升5%

Path-of-Thoughts:将"思维链"升级为"思维图",三阶段框架取代单一推理,提升大模型复杂关系推理准确性至88.2%与效率提升5% 论文大纲理解通用流程框架 观察和假设观察现象提出假设实验验证解法拆解解法:Path-of…

ThinkPHP 8高效构建Web应用-第一个简单的MVC应用示例

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 我们先实现一…

No.3十六届蓝桥杯备战|数据类型长度|sizeof|typedef|练习(C++)

数据类型⻓度 每⼀种数据类型都有⾃⼰的⻓度,使⽤不同的数据类型,能够创建出⻓度不同的变量,变量⻓度的不同,存储的数据范围就有所差异。 sizeof操作符 sizeof 是⼀个关键字,也是操作符,专⻔是⽤来计算特…

大数据组件(一)快速入门调度组件Airflow

大数据组件(一)快速入门调度组件Airflow DolphinScheduler和 Airflow是数据领域很流行的两款开源任务调度系统。DolphinScheduler 致力于用可视化的方式去完成一个 DAG 工作流,而 Airflow 则想的是用类似于编程的方式完成一个 DAG 工作流。 Apache DolphinSchedule…

jpeg学习

相关最全的一篇文章链接:https://www.cnblogs.com/wtysos11/p/14089482.html YUV基础知识 Y表示亮度分量:如果只显示Y的话,图像看起来会是一张黑白照。 U(Cb)表示色度分量:是照片蓝色部分去掉亮度&#x…

内部类(3)

大家好,今天我们继续来看看内部类,今天我们来学习一下内部类的分类,我们来看看一共有几种,它们有什么作用,那么话不多说,我们直接开始。 9.1 内部类的分类 先来看下,内部类都可以在一个类的哪些位置进行定…

你还在用rand()生成随机数?

1. rand() 的缺陷 伪随机数生成器使用数学算法来产生具有良好统计特性的数字序列,但这些数字并非真正随机。 C 标准库中的 rand() 函数并不保证所生成的随机序列的质量。某些 rand() 实现生成的数字周期较短,且这些数字是可以预测的。对于有强伪随机数…

基于FPGA的2ASK+帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可设置SNR

目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 2ASK调制解调 2.2 帧同步 3.Verilog核心程序 4.完整算法代码文件获得 1.算法仿真效果 vivado2019.2仿真结果如下(完整代码运行后无水印): 设置SNR8db 设置SNR20db 整体波形效果&…

RT-Thread中堆和栈怎么跟单片机内存相联系

现在RT-ThreadMCU的应用方式越来越普遍,RT-Thread需要配置MCU中的RAM到的系统中,进入系统内存管理,才能提供给基于实时系统的应用程序使用,比如给应用程序提供malloc、free等函数调用功能。在嵌入式软件开发中,我们经常…

2、Bert论文笔记

Bert论文 1、解决的问题2、预训练微调2.1预训练微调概念2.2深度双向2.3基于特征和微调(预训练下游策略) 3、模型架构4、输入/输出1.输入:2.输出:3.Learned Embeddings(学习嵌入)1. **Token Embedding**2. **Position Embedding**3…

TiDB 的MPP架构概述

MPP架构介绍: 如图,TiDB Server 作为协调者,首先 TiDB Server 会把每个TiFlash 拥有的region 会在TiFlash上做交换,让表连接在一个TiFlash上。另外 TiFlash会作为计算节点,每个TiFlash都负责数据交换,表连接…

3、redis的高可用

主从复制 主从复制:这是redis高可用的基础。哨兵模式和集群都是建立在此基础之上。 主从模式和数据库的主从模式是一样的,主负责写入,然后把写入的数据同步到从,从节点只能读不能写。read only。 不能做高可用的切换&#xff…

【架构-38】如何选择通信协议和数据格式

一、通信协议选择 不同的协议适用于不同的应用场景,关键在于数据传输的需求,如:实时性、带宽、可靠性等。下面是几种常见通信协议的适用场景: WebSocket 适用场景:实时、双向数据传输、低延迟、持久连接 特点&#x…