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

【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不是布局管理控件,而是搭配布局管理控件使用的控件。在使用布局管理控件的时候可能需要在控件之间添加空白隔开控件,此时就需要QSpacerItem

例子:

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

http://www.lryc.cn/news/514809.html

相关文章:

  • cesium小知识:常见的20多种property详解
  • 图数据库 | 17、高可用分布式设计(上)
  • 1.运控概述
  • DuckDB:密钥管理器及其应用
  • 单元测试4.0+思路总结
  • epoll 水平ET跟边缘LT触发的区别是什么
  • 设计模式 创建型 单例模式(Singleton Pattern)与 常见技术框架应用 解析
  • Java项目实战II基于微信小程序的家庭大厨(开发文档+数据库+源码)
  • 【JVM】总结篇-字节码篇
  • HTML——28.音频的引入
  • Visual Point Cloud Forecasting enables Scalable Autonomous Driving——点云论文阅读(12)
  • 《Xsens动捕与人形机器人训练》讲座将于1月9日下午2:30在线上召开
  • Mac 安装 Flutter 提示 A network error occurred while checking
  • 形态学:图像处理中的强大工具
  • 树莓派 Pico RP2040 教程点灯 双核编程案例
  • 2024年大型语言模型(LLMs)的发展回顾
  • 实现单例模式的五种方式
  • pcl源码分析之计算凸包
  • 在K8S中,Pod请求另一个Pod偶尔出现超市或延迟,如何排查?
  • 3blue1brow线代笔记
  • 【前端系列】优化axios响应拦截器
  • SQL使用视图
  • 在Windows计算机上打开 HEIC 文件的 6 种有效方法
  • 开源数据集成平台白皮书重磅发布《Apache SeaTunnel 2024用户案例合集》!
  • C# delegate 委托使用教程
  • 《机器学习》——数据标准化(0~1标准化,z标准化)
  • 如何监控和管理API接口的调用频率和并发量?
  • springboot+vue使用EasyCaptcha实现简单验证码
  • “善弈者”也需妙手,Oclean欧可林:差异化不是说说而已
  • Lianwei 安全周报|2025.1.2