QT中的常用控件(五)

目录

[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)测试效果

相关推荐
qq_423233903 分钟前
C++与Python混合编程实战
开发语言·c++·算法
m0_7155753415 分钟前
分布式任务调度系统
开发语言·c++·算法
a413244724 分钟前
ubuntu 25 安装vllm
linux·服务器·ubuntu·vllm
Configure-Handler30 分钟前
buildroot System configuration
java·服务器·数据库
csbysj202032 分钟前
选择(Selectable)
开发语言
naruto_lnq36 分钟前
泛型编程与STL设计思想
开发语言·c++·算法
津津有味道1 小时前
易语言TCP服务端接收刷卡数据并向客户端读卡器发送指令
服务器·网络协议·tcp·易语言
:Concerto1 小时前
JavaSE 注解
java·开发语言·sprint
m0_748708051 小时前
C++中的观察者模式实战
开发语言·c++·算法
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.2 小时前
Keepalived VIP迁移邮件告警配置指南
运维·服务器·笔记