目录
[1. 容器类控件](#1. 容器类控件)
[1.1 QGroupBox](#1.1 QGroupBox)
[1.1.1 核心属性](#1.1.1 核心属性)
[1.1.2 demo1 点菜机](#1.1.2 demo1 点菜机)
[1.2 QTabWidget](#1.2 QTabWidget)
[1.2.1 核心属性](#1.2.1 核心属性)
[1.2.2 核心信号](#1.2.2 核心信号)
[1.2.3 demo1 QTabWidget的使用](#1.2.3 demo1 QTabWidget的使用)
[2. 布局管理器](#2. 布局管理器)
[2.1 QVBoxLayout](#2.1 QVBoxLayout)
[2.1.1 核心属性](#2.1.1 核心属性)
[2.1.2 demo1 使用QVBoxLayout 管理多个控件](#2.1.2 demo1 使用QVBoxLayout 管理多个控件)
[2.2 QHBoxLayout](#2.2 QHBoxLayout)
[2.2.1 核心属性](#2.2.1 核心属性)
[2.2.2 demo1 垂直布局管理器中嵌套水平布局管理器](#2.2.2 demo1 垂直布局管理器中嵌套水平布局管理器)
[2.3 QGridLayout](#2.3 QGridLayout)
[2.3.1 核心属性](#2.3.1 核心属性)
[2.3.2 demo1 QGridLayout使用](#2.3.2 demo1 QGridLayout使用)
[2.4 QFormLayout](#2.4 QFormLayout)
1. 容器类控件
顾名思义,这类控件可以放入多个控件,在这里面的控件的父对象不再是Widget,而是这个容器控件.容器类控件一般有 QGroupBox分组框 和QTabWidget标签页.
1.1 QGroupBox
QGroupBox可以对控件进行分组,使页面变得更加好看与整洁.
注意, 不要把 QGroupBox 和QButtonGroup 混淆.
1.1.1 核心属性
title: 分组框的标签
alignment : 分组框内部内容的对齐方式.
flat: 是否是"扁平模式".
checkable: 是否可选择.
checked : 是否是选择状态.
1.1.2 demo1 点菜机
1)创建控件
这里使用了三个分组框使三种有关联性的控件分别为一组,美化了界面

2)测试效果

1.2 QTabWidget
QTabWidget 是一个标签页,其中可以添加一些控件.
1.2.1 核心属性
tabPosition : 标签页所在的方位.
currrentIndex : 当前选中的是第几个标签页.
currentTabText : 当前选中标签页的文本.
currentIcon : 当前选中标签页的图标.
tabsCloseable : 标签页是否可以关闭.
movable : 是否可以移动.
1.2.2 核心信号
currentChange(int) 在标签页发生切换时触发,参数为被点击的选项卡编号.
**tabBarClicked(int)**在点击选项卡的标签条的时候触发,参数为被点击的选项卡编号.
**tabBarDouble(int)**在双击选项卡的标签条的时候触发.
tabCloseRequest(int) 在标签页被关闭的时候触发.
1.2.3 demo1 QTabWidget的使用
1)创建相关控件

2)初始化控件

3)增加标签页

这里建议先创建标签页再设置当前选中的标签页.在QT中子控件在创建的初始状态是隐藏的,只有某个操作调用了当前控件的show()函数才会将这个控件显示出来,例如:
情况一:先创建w,再创建label,然后一起显示
创建
Widget w(此时w是隐藏的)。创建
Label并挂载到w上(此时Label是隐藏的)。最后调用
setCurrentIndex。这会导致TabWidget切换页面,从而触发w的显示(show())。当父控件
w从隐藏变为显示时,它会自动调用所有子控件的显示方法。所以Label跟随w一起显示出来了。
情况2:先创建w,再显示w,然后创建label
创建
Widget w。调用
setCurrentIndex。此时TabWidget立即把w显示出来了(w变成了 Visible 状态)。之后 才创建
Label并挂载到w上。因为父控件
w已经 是显示状态了,新创建的子控件Label不会收到"父控件变为显示"的通知。而新控件默认又是隐藏的,所以它就一直保持隐藏状态。
此时如果想要Label显示出现只能手动调用显示函数 label->show().
4)删除标签页

5)感知标签页切换

6)测试效果

2. 布局管理器
QT中有一类控件叫做布局管理器,将控件添加到布局管理器中的时候不需要调整它们的位置,布局管理器会自动调整,并且根据窗口大小来自适应控件对的尺寸.
2.1 QVBoxLayout
QVBoxLayout表示垂直布局管理器.
2.1.1 核心属性
layoutLeftMargin 左侧边距
layoutRightMargin 右侧边距
layoutTopMargin 上⽅边距
layoutBottomMargin下⽅边距
layoutSpacing 相邻元素之间的间距
Layout只是用来布局,没有提供信号.
2.1.2 demo1 使用QVBoxLayout 管理多个控件
1)初始化控件

2)测试效果

2.2 QHBoxLayout
QHBoxLayout表示水平布局管理器.
2.2.1 核心属性
与QVBoxLayout的属性一致
layoutLeftMargin 左侧边距
layoutRightMargin 右侧边距
layoutTopMargin 上⽅边距
layoutBottomMargin下⽅边距
layoutSpacing 相邻元素之间的间距
2.2.2 demo1 垂直布局管理器中嵌套水平布局管理器
1)初始化控件

2)测试效果

2.3 QGridLayout
QGridLayout是一个网格布局管理器
2.3.1 核心属性
layoutLeftMargin 左侧边距
layoutRightMargin 右侧边距
layoutTopMargin 上⽅边距
layoutBottomMargin下⽅边距
layoutSpacing 相邻元素之间的间距
layoutRowStretch⾏⽅向的拉伸系数
layoutColumnStretch 列⽅向的拉伸系数
2.3.2 demo1 QGridLayout使用
1)初始化控件

2)测试效果

2.4 QFormLayout
除了上述的布局管理器之外, Qt 还提供了QFormLayout, 属于是 QGridLayout 的特殊情况, 专⻔⽤于实现两列表单的布局.
2.4.1 demo1使用QFormLayout 创建表单
1)创建控件

2)测试效果
