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

目录

容器控件

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隔开两个按钮控件。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Lucene 漏洞历险记:修复损坏的索引异常

作者:来自 Elastic Benjamin Trent 有时,一行代码需要几天的时间才能写完。在这里,我们可以看到工程师在多日内调试代码以修复潜在的 Apache Lucene 索引损坏的痛苦。 做好准备 这篇博客与往常不同。它不是对新功能或教程的解释。这是关于花…

【最新】沃德协会管理系统源码+uniapp前端+环境教程

一.系统介绍 一款基于FastAdminThinkPHPUniapp开发的商协会系统,新一代数字化商协会运营管理系统,以“智慧化会员体系、智敏化内容运营、智能化活动构建”三大板块为基点,实施功能全场景覆盖,一站式解决商协会需求壁垒&#xff0…

STM32 软件I2C读写

单片机学习! 目录 前言 一、软件I2C读写代码框架 二、I2C初始化 三、六个时序基本单元 3.1 引脚操作的封装和改名 3.2 起始条件执行逻辑 3.3 终止条件执行逻辑 3.4 发送一个字节 3.5 接收一个字节 3.5 发送应答&接收应答 3.5.1 发送应答 3.5.2 接…

LeetCode - Google 校招100题 第6天 回溯法(Backtracking) (8题)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/144743505 LeetCode 合计最常见的 112 题: 校招100题 第1天 链表(List) (19题)校招100题 第2天 树(Tree) (21题)校招100题 第3天 动态规划(DP) (20题)

【PCIe 总线及设备入门学习专栏 4.5 -- PCIe Message and PCIe MSI】

文章目录 PCIe Message 与 MSIPCIe Message 和 MSI 的作用与关系MSI 的配置与寄存器MSI 和 ARM GIC 的关系示例:MSI 在 ARM GIC 的实际应用总结 PCIe Message 与 MSI 本文将介绍 PCIe message 的作用以及message 与 MSI 的关系,再介绍 MSI 如何配置以及…

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

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

NSSCTFpwn刷题

[SWPUCTF 2021 新生赛]nc签到 打开附件里面内容 import osart (( "####!!$$ ))#####!$$ ))(( ####!!$:(( ,####!!$: )).###!!$:##!$:#!!$!# #!$: #$#$ #!$: !!!$:\ "!$: /\ !: /"\ : /"-."-/\\\-."//.-"…

Vue多页面路由与模版解析

上篇文章中我们成功打包并输出了多页文件,而构建一个多页应用能够让我们进一步了解项目配置的可拓展性,可以对学习 Vue 和 webpack 起到强化训练的效果,本文将在此基础上主要针对多页路由及模板的配置进行系列的介绍。 路由配置 1. 跳转 在…

UE5材质节点SimpleGrassWind

SimpleGrassWind节点可以模拟树叶扰动,或小草晃动效果 用来做风格化树、风格化草效果很好 主要节点 前三个节点分别用来控制,风强度,风重力,风速度,WPO是世界位置偏移

macrodroid通过http请求控制手机运行宏

macrodroid adb命令 adb shell pm grant com.arlosoft.macrodroid android.permission.WRITE_SECURE_SETTINGS例:http请求手机播放指定MP3文件 声音素材_电量过低提醒 新建一个宏 添加触发器-连接-http服务器请求 路径随意填,最好不要有特殊符号,不然浏览器识别链接会出错,…

单片机中运行多个定时器

在单片机的裸机编程环境中,同时运行多个定时器是完全可行的,但需要注意一些关键点以确保系统的稳定性和效率。以下是一些考虑因素和实现方法: 1. 硬件支持 定时器数量:首先确认您的单片机是否具备足够的定时器资源。大多数现代…

快速上手LangChain(一)

文章目录 LangChain一、背景二、什么是langchain三、Components 组件Prompt templates 提示模板Chat models 聊天模型Messages 消息Document loadersText Spltters 文本分割Vectorstores 向量数据库 四、langchain基础概念Tool calling 工具调用(1) 工具…

大模型Weekly 03|OpenAI o3发布;DeepSeek-V3上线即开源!

大模型Weekly 03|OpenAI o3发布;DeepSeek-V3上线即开源!DeepSeek-V3上线即开源;OpenAI 发布高级推理模型 o3https://mp.weixin.qq.com/s/9qU_zzIv9ibFdJZ5cTocOw?token47960959&langzh_CN 「青稞大模型Weekly」,持…

记录一下图像处理的基础知识

记录一下自己学习的图像处理的基础知识。 一、图像的文件格式以及常用的图像空间 1、文件格式 常见的图像文件格式有 jpg, png, bmp, gif (1)jpg:有损压缩算法,大幅减小文件大小,便于存储和传输,兼容性…

时间敏感网络中全面分析与调度的模型驱动方法

论文:A Model-Driven Approach for the Comprehensive Analysis and Scheduling in Time-Sensitive Networks》 背景与动机 TSN 的发展与应用领域:自 2012 年起,IEEE 802.1 TSN 任务组致力于开发通信标准,增强 IEEE 802 网络&…

QT---------GUI程序设计基础

代码UI化设计(QT) 实例功能概述 假设我们要创建一个简单的计算器应用程序。该应用程序具有以下功能: 包含数字按钮(0-9)、操作符按钮(、-、*、/)、等于按钮()和清除按…

大模型提示词初探

大模型提示词初探 在与大模型交互的过程中,提示词起着至关重要的作用,它犹如给模型下达的精准任务指令,直接影响着模型生成内容的准确性、高效性与合理性。合理运用提示词,能够有效减少模型出现错误和幻觉的情况,从而…

Navicat 连接 SQL Server 详尽指南

Navicat 是一款功能强大的数据库管理工具,它提供了直观的图形界面,使用户能够轻松地管理和操作各种类型的数据库,包括 SQL Server。本文将详尽介绍如何使用 Navicat 连接到 SQL Server 数据库,包括安装设置、连接配置、常见问题排…

【Linux】进程间通信-> 共享内存

共享内存原理 在C语言/C中,malloc也可以在物理内存申请空间,将申请的物理内存空间通过页表映射到进程地址空间,将内存空间的起始地址(虚拟地址)返回,进而进程可以使用虚拟地址通过页表映射到物理内存的方式…

高仿CSDN编辑器,前端博客模板

高仿CSDN编辑器纯前端模板,使用的js、html、vue、axios等技术,网络请求库已进行封装,可以按需调整界面,需要源码联系(4k左右)。 1.支持代码高亮 2.支持目录点击定位 3.支持文件上传、图片上传(需要自己写后端接口) 4.M…