qt QTabWidget详解
1、概述
QTabWidget是Qt框架中的一个控件,它提供了一个标签页式的界面,允许用户在不同的页面(或称为标签)之间切换。每个页面都可以包含不同的内容,如文本、图像、按钮或其他小部件。QTabWidget非常适合用于创建具有多个功能区域的应用程序,这些区域可以通过简单的标签切换来访问,而无需打开新的窗口或对话框。
2、重要方法
QTabWidget类提供了一系列方法来管理其标签页和内容。以下是一些关键的方法:
- addTab(QWidget *page, const QString &label):向QTabWidget中添加一个新页面,并指定其标签文本。
- insertTab(int index, QWidget *page, const QString &label):在指定索引处插入一个新页面。
- removeTab(int index):移除指定索引处的页面。
- clear():移除所有页面。
- currentIndex():返回当前显示的页面的索引。
- setCurrentIndex(int index):设置当前显示的页面为指定索引的页面。
- currentWidget():返回当前显示的页面的QWidget指针。
- setTabText(int index, const QString &label):设置指定索引处的页面的标签文本。
- tabText(int index):返回指定索引处的页面的标签文本。
- setTabIcon(int index, const QIcon &icon):为指定索引处的页面设置图标。
- tabIcon(int index):返回指定索引处的页面的图标。
3、重要信号
QTabWidget也支持Qt的信号与槽机制,它提供了一些与标签页切换相关的信号。以下是一些重要的信号:
- currentChanged(int index):当当前显示的页面发生变化时发出。参数
index是新页面的索引。 - tabBarClicked(int index):当用户点击标签栏中的某个标签时发出(即使该标签已经是当前显示的页面)。参数
index是被点击的标签的索引。 - tabBarDoubleClicked(int index):当用户双击标签栏中的某个标签时发出。参数
index是被双击的标签的索引。
需要注意的是,虽然QTabWidget本身提供了这些信号,但你也可以通过连接其内部使用的QTabBar(可以通过tabBar()方法访问)的信号来实现更细粒度的控制。
#include <QApplication>
#include <QMainWindow>
#include <QTabWidget>
#include <QWidget>
#include <QVBoxLayout>
#include <QLabel>
#include <QIcon> class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) { // 设置窗口标题和大小 setWindowTitle("QTabWidget Example"); resize(400, 300); // 创建一个QTabWidget QTabWidget *tabWidget = new QTabWidget(this); // 创建第一个页面并设置内容 QWidget *page1 = new QWidget(); QVBoxLayout *layout1 = new QVBoxLayout(page1); QLabel *label1 = new QLabel("This is the first tab.", page1); layout1->addWidget(label1); // 创建第二个页面并设置内容 QWidget *page2 = new QWidget(); QVBoxLayout *layout2 = new QVBoxLayout(page2); QLabel *label2 = new QLabel("This is the second tab.", page2); layout2->addWidget(label2); // 创建第三个页面并设置内容 QWidget *page3 = new QWidget(); QVBoxLayout *layout3 = new QVBoxLayout(page3); QLabel *label3 = new QLabel("This is the third tab.", page3); layout3->addWidget(label3); // 向QTabWidget中添加页面,并设置标签文本和图标 tabWidget->addTab(page1, "Tab 1"); tabWidget->addTab(page2, QIcon(":/icons/icon2.png"), "Tab 2"); // 假设你有一个图标文件 tabWidget->addTab(page3, "Tab 3"); // 创建一个中心部件并设置布局 QWidget *centralWidget = new QWidget(this); QVBoxLayout *mainLayout = new QVBoxLayout(centralWidget); mainLayout->addWidget(tabWidget); // 将中心部件设置为主窗口的部件 setCentralWidget(centralWidget); // 连接currentChanged信号到槽函数(可选) connect(tabWidget, &QTabWidget::currentChanged, this, &MainWindow::onTabChanged); } private slots: void onTabChanged(int index) { // 在这里处理标签页切换的逻辑(可选) qDebug() << "Tab changed to:" << index; }
}; int main(int argc, char *argv[]) { QApplication app(argc, argv); // 创建并显示主窗口 MainWindow mainWindow; mainWindow.show(); // 进入应用程序的主事件循环 return app.exec();
}


觉得有帮助的话,打赏一下呗。。

相关文章:
qt QTabWidget详解
1、概述 QTabWidget是Qt框架中的一个控件,它提供了一个标签页式的界面,允许用户在不同的页面(或称为标签)之间切换。每个页面都可以包含不同的内容,如文本、图像、按钮或其他小部件。QTabWidget非常适合用于创建具有多…...
linux shell脚本学习(1):shell脚本基本概念与操作
1.什么是shell脚本 linux系统中,shell脚本或称之为bash shell程序,通常是由vim编辑,由linux命令、bash shell指令、逻辑控制语句、注释信息组成的可执行文件 *linux中常以.sh后缀作为shell脚本的后缀。linux系统中文件乃至脚本的后缀并没有…...
Savitzky-Golay(SG)滤波器
Savitzky-Golay(SG)滤波器是一种在时域内基于局域多项式最小二乘法拟合的滤波方法,它最初由Savitzky A和Golay M于1964年提出,并广泛应用于数据流平滑除噪。 基本介绍 一、基本原理 SG滤波器通过在滑动窗口内拟合多项式来平滑数…...
Webserver(2.7)共享内存
目录 共享内存共享内存实现进程通信 共享内存 共享内存比内存映射效率更高,因为内存映射关联了一个文件 共享内存实现进程通信 write.c #include <stdio.h> #include <sys/ipc.h> #include <sys/shm.h> #include <string.h>int main(){…...
【网安案例学习】凭证填充Credential Stuffing
### 凭证填充的深入讨论 凭证填充(Credential Stuffing)是一种网络攻击技术,攻击者利用从数据泄露中获取的大量用户名和密码组合,尝试在其他网站和服务上进行自动化登录。这种攻击依赖于用户在多个网站上重复使用相同密码的习惯。…...
网站建设公司怎么选?网站制作公司怎么选才不会出错?
寻找适合靠谱的网站设计公司,不要盲目选广告推最多的几家,毕竟要实现自身品牌营销,还是需要多方面考量。以下几个方面可以作为选择的参考: 1. 专业能力如何? 一个公司的专业能力,决定了最后网站设计的成果…...
19. 架构重要需求
文章目录 第19章 架构重要需求19.1 从需求文档中收集架构重要需求(ASRs)不要抱太大希望从需求文档中找出架构重要需求 19.2 通过访谈利益相关者收集架构重要需求19.3 通过理解业务目标收集架构重要需求19.4 在效用树中捕获架构重要需求19.5 变化总会发生…...
iOS 再谈KVC、 KVO
故事背景:大厂面试,又问道了基本的kvc kvo的原理和使用,由于转了前端,除了个setter和getter,我全忘记了,其实还是没有理解记忆,下面再看一下kvc 和kvo ,总结一个让人通过理解而无法忘记的方法&a…...
java、excel表格合并、指定单元格查找、合并文件夹
#创作灵感# 公司需求 记录工作内容 后端:JAVA、Solon、easyExcel、FastJson2 前端:vue2.js、js、HTML 模式1:合并文件夹 * 现有很多文件夹 想合并全部全部的文件夹的文件到一个文件夹内 * 每个部门发布的表格 合并全部的表格为方便操作 模…...
最基础版编译运行Java(纯小白)
流程图: ⚠ 需要先安装JDK (Java Development Kit) 1. 写文件 首先写好自己的“文件”,可以用Sublime Text等文本编辑器写,还可以直接新建文本文档写一个.txt文件。 以编写一个HelloWorld程序为例: public class HelloWorld{p…...
六西格玛项目助力,手术机器人零部件国产化稳中求胜——张驰咨询
项目背景 XR-1000型腔镜手术机器人是某头部手术机器人企业推出的高端手术设备,专注于微创手术领域,具有高度的精确性和稳定性。而XR-1000型机器人使用的部分核心零部件长期依赖进口,特别是高精度电机、关节执行机构和视觉系统等,…...
Python爬虫系列(一)
目录 一、urllib 1.1 初体验 1.2 使用urllib下载网页、图片、视频等 1.3 反爬介绍 1.4 请求对象定制 1.5 get请求的quote方法 1.6 多个参数转成ascii编码 1.7 post请求 1.8 综合案例演示 一、urllib 1.1 初体验 # urllib是python默认带的,无需额外下载 i…...
# vim那些事...... vim删除文件全部内容
vim那些事… vim删除文件全部内容 1、在 Vim 中删除整个文件的内容,可以使用以下命令: 1)打开 Vim,并编辑你想要清空的文件。 2)按 Esc 确保你不在插入模式,而在命令模式。 3)输入 gg 跳转到…...
Selinux及防火墙
一,selinux简介: SELinux(Security-Enhanced Linux)是一个Linux内核安全模块,旨在提供强制访问控制(MAC)机制,以增强系统的安全性。由美国国家安全局(NSA)开…...
业绩代码查询实战——php
一、一级代码显示职员 foreach($data_职员信息 as $key > $value){//$where_查询分类$where_查询通用;//$dat分类one $业绩提成->where($where_查询分类)->order("CreateDate desc")->select();if($value[haschildname]0 && $value[key] !"…...
内网穿透技术选型PPTP(点对点隧道协议)和 FRP(Fast Reverse Proxy)
PPTP(点对点隧道协议)和 FRP(Fast Reverse Proxy)是两种实现内网穿透的技术,但它们的工作原理、使用场景和特点有很大区别。以下是它们的详细比较: PPTP(Point-to-Point Tunneling Protocol&am…...
信号与噪声分析——第三节:随机过程的统计特征
随机过程的定义: 随机过程是一种数学模型,用来描述系统或现象在时间或者空间上随之变化的不确定性。 一个随机过程的数字特征 1.数学期望(统计平均值): 表示为 数学期望是随机过程在时间 t 上的平均值,通常…...
nginx(四):如何在 Nginx 中配置以保留真实 IP 地址
如何在 Nginx 中配置以保留真实 IP 地址 1、概述2、nginx配置示例2.1、配置说明2.2、客户端获取真实IP2.2.1、代码说明 3、插曲4、总结 大家好,我是欧阳方超,可以我的公众号“欧阳方超”,后续内容将在公众号首发。 1、概述 当使用nginx作为…...
docker对nginx.conf进行修改后页面无变化或页面报错
可能是因为没有重启nginx容器 可以执行 docker restart nginx 重启nginx试试 引入了其他的配置文件 本人安装的是docker默认的nginx,自带了一个default.conf的配置文件,并且在nginx.conf中还引入了这个文件,后面我还对nginx.conf添加了一个…...
SpringCloudGateway — 网关路由
Spring Cloud Gateway 是 Spring 提供的一个高效、灵活的 API 网关解决方案,基于 Spring 5、Spring Boot 2 和 Project Reactor,具有高并发和低延迟的特点。它用于在微服务架构中对外提供统一的入口,处理请求的路由、过滤、负载均衡等功能。 …...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
