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

Qt 容器类控件

Group Box

使用 QGroupBox 实现一个带有标题的分组框可以把其他的控件放到里面作为一组,这样看起来能更好看一点.

在这里插入图片描述

核心属性

属性说明
title分组框的标题
alignment分组框内部内容的对齐方式
flat是否是 “扁平” 模式
checkable是否可选择.
设为 true,则在 title 前方会多出一个可勾选的部分.
checked描述分组框的选择状态 (前提是 checkable 为 true)

分组框只是一个用来"美化界面"这样的组件,并不涉及到用户交互和业务逻辑.属于"锦上添花"

代码示例:给麦当劳案例加上分组框

(1) 在界面上创建三个分组框(Group Box),且在分组框内部创建下拉框(ComboBox)和微调框(SpinBox)

在这里插入图片描述

注意:在复制粘贴控件的时候, 一定要先选中对应的父控件, 再粘贴.

(2) 编写 widget.cpp,添加初始化下拉框的代码

Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{ui->setupUi(this);ui->comboBox->addItem("巨⽆霸");ui->comboBox->addItem("⻨辣鸡腿堡");ui->comboBox_2->addItem("薯条");ui->comboBox_2->addItem("⻨辣鸡翅");ui->comboBox_3->addItem("可乐");ui->comboBox_3->addItem("雪碧");
}

(3) 运行程序, 观察效果

在这里插入图片描述

Tab Widget

使用 QTabwidget 实现一个带有标签页的控件,可以往里面添加一些 widget。进一步的就可以通过标签页来切换。

核心属性

属性说明
tabPosition标签页所在的位置
North:上方
South:下方
West:左侧
East:右侧
currentIndex当前选中了第几个标签页 (从 0 开始计算)
currentTabText当前选中的标签页的文本
currentTabName当前选中的标签页的名字
currentTabIcon当前选中的标签页的图标
currentTabToolTip当前选中的标签页的提示信息
tabsCloseable标签页是否可以关闭
movable标签页是否可以移动

核心信号

属性说明
currentChanged(int)在标签页发生切换时触发, 参数为被点击的选项卡编号.
tabBarClicked(int)在点击选项卡的标签条的时候触发. 参数为被点击的选项卡编号.
tabBarDoubleClicked(int)在双击选项卡的标签条的时候触发. 参数为被点击的选项卡编号
tabCloseRequest(int)在标签页关闭时触发. 参数为被关闭的选项卡编号

代码示例: 使用标签页管理多组控件

(1) 在界面上创建一个 QTabwidget,和两个按钮。按钮的 objectNamepushButton_addpushButton_remove

在这里插入图片描述

注意

  • QTabWidget 中的每个标签页都是一个 QWidget
  • 点击标签页, 就可以直接切换.
  • 右键 QTabWidget , 可以添加标签页或者删除标签页.

(2) 编写 widget.cpp,进行初始化,给标签页中放个简单的 label

注意新创建的 label 的父元素,是 ui->tab 和 ui->tab_2。Qt 中使用父子关系决定该控件“在哪里"

QLabel* label = new QLabel(ui->tab);
label->setText("标签页1");
label->resize(100, 50);
QLabel* label2 = new QLabel(ui->tab_2);
label2->setText("标签页2");
label2->resize(100, 50);

(3) 编写按钮的 slot 函数

  • 使用 count() 获取到标签页的个数.
  • 使用 addTab 新增标签页
  • 使用 removeTab 删除标签页
  • 使用 currentIndex 获取到当前标签页的下标.
  • 使用 setCurrentIndex 切换当前标签页
void Widget::on_pushButton_add_clicked()
{// 获取当前有⼏个标签⻚了int count = ui->tabWidget->count();// 创建新的 widgetQWidget* w = new QWidget();ui->tabWidget->addTab(w, QString("Tab ") + QString::number(count + 1));// 给 widget 中添加 labelQLabel* label = new QLabel(w);label->setText(QString("标签⻚") + QString::number(count + 1));label->resize(100, 50);// 选中这个新的标签⻚ui->tabWidget->setCurrentIndex(count);
}void Widget::on_pushButton_remove_clicked()
{// 获取当前标签⻚的下标int index = ui->tabWidget->currentIndex();// 删除这个标签⻚ui->tabWidget->removeTab(index);
}

(4) 编写 QTabWidget 的 currentChanged 函数

void Widget::on_tabWidget_currentChanged(int index)
{qDebug() << "当前选中标签⻚为: " << index;
}

(5) 运行程序, 观察效果

  • 点击新建标签页, 可以创建出新的标签.
  • 点击删除当前标签页, 可以删除标签.
  • 切换标签页时, 可以看到 qDebug 打印出的标签页编号.

在这里插入图片描述

相关文章:

  • 在Linux/Ubuntu/Debian中创建自己的命令快捷方式
  • Vue3快速上手(十七)Vue3之状态管理Pinia
  • 基于sortablejs实现拖拽element-ui el-table表格行进行排序
  • java Flink(四十二)Flink的序列化以及TypeInformation介绍(源码分析)
  • 探索ChatGPT时代下的下一代信息检索系统:机遇与挑战
  • 系统资源耗尽对服务器的影响
  • Linux 系统日志
  • (一)Linux+Windows下安装ffmpeg
  • docker opensearch arm64 运行失败解决方案
  • 国内ip切换是否合规?
  • 针对ETC系统的OBE-SAM模块设计方案
  • python --- 练习题3
  • AI基础知识(3)--神经网络,支持向量机,贝叶斯分类器
  • S32 Design Studio 中断
  • python日常刷题(一)
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • iOS小技巧之UIImagePickerController实现头像选择
  • Js基础——数据类型之Null和Undefined
  • Linux后台研发超实用命令总结
  • Vue全家桶实现一个Web App
  • 阿里云购买磁盘后挂载
  • 闭包--闭包之tab栏切换(四)
  • 大整数乘法-表格法
  • 关于Java中分层中遇到的一些问题
  • 数据仓库的几种建模方法
  • 一、python与pycharm的安装
  • 一个完整Java Web项目背后的密码
  • 字符串匹配基础上
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​水经微图Web1.5.0版即将上线
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (9)目标检测_SSD的原理
  • (arch)linux 转换文件编码格式
  • (第一天)包装对象、作用域、创建对象
  • (定时器/计数器)中断系统(详解与使用)
  • (二)linux使用docker容器运行mysql
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (九)信息融合方式简介
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (四) Graphivz 颜色选择
  • (四)图像的%2线性拉伸
  • (转)C#调用WebService 基础
  • (转)IOS中获取各种文件的目录路径的方法
  • .gitignore文件_Git:.gitignore
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET Core 中的路径问题
  • .Net MVC + EF搭建学生管理系统
  • .NET 动态调用WebService + WSE + UsernameToken