当前位置: 首页 > 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

例子:

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


http://www.mrgr.cn/news/81980.html

相关文章:

  • 【深度学习】卷积网络代码实战ResNet
  • ubuntu进行C++的调试
  • vim 按下esc后取消高亮
  • 移动 APP 设计规范参考
  • 【人工智能】Python实现时序数据预测:ARIMA与LSTM的对比
  • 【嵌入式硬件】直流电机驱动相关
  • 24.小R的随机播放顺序<字节青训营-中等题>
  • PySide6 一些基础资料
  • 选择器(结构伪类选择器,伪元素选择器),PxCook软件,盒子模型
  • Flutter封装一个三方ViewPager学习
  • 如何规范的提交Git?
  • 「Mac畅玩鸿蒙与硬件48」UI互动应用篇25 - 简易购物车功能实现
  • logback之自定义pattern使用的转换器
  • jetbrains HTTPS 请求与响应流量分析报告【二】
  • vuex - 第一天
  • apifox
  • 搭建ORB-SLAM3编译环境
  • GDPU Vue前端框架开发 期末赛道出勇士篇(更新ing)
  • GXUOJ-算法-第二次作业(矩阵连乘、最长公共子序列、0-1背包问题、带权区间调度)
  • fpga系列 HDL:ModelSim显示模拟波形+十进制格式数值(临时方法和设置持久化的默认值)
  • Unity中列表List使用出类似字典Dictionary的感觉
  • UE5材质节点Panner
  • Elasticsearch:analyzer(分析器)
  • 工业大数据分析算法实战-day19
  • 学习笔记 --C#基础其他知识点(同步和异步)
  • Hugging Face Dataset的 dataset_info.json 文件详解