【Qt控件之QTabBar】介绍及使用
概述
QTabBar
类提供了一个选项卡栏,例如用于选项卡对话框。
QTabBar非常简单易用,它使用预定义的形状绘制选项卡,并在选择选项卡时发出信号。它可以被子类化以调整外观和感觉。Qt还提供了一个实现好的QTabWidget。
每个选项卡具有一个tabText()方法、一个可选的tabIcon()方法、一个可选的tabToolTip()方法、一个可选的tabWhatsThis()方法和一个可选的tabData()方法。可以使用setTabText()、setTabIcon()、setTabToolTip()、setTabWhatsThis()和setTabData()方法更改选项卡的属性。可以使用setTabEnabled()方法单独启用或禁用每个选项卡。
每个选项卡可以显示不同颜色的文本。可以使用tabTextColor()函数找到选项卡的当前文本颜色,并使用setTabTextColor()函数设置特定选项卡的文本颜色。
可以使用addTab()方法添加选项卡,或使用insertTab()方法在特定位置插入选项卡。选项卡的总数由count()方法给出。可以使用removeTab()方法从选项卡栏中删除选项卡。结合removeTab()和insertTab()方法,可以将选项卡移动到不同的位置。
shape属性定义了选项卡的外观。选择形状是一种个人喜好,尽管选项卡对话框(用于首选项等)通常使用RoundedNorth。对话框以外的窗口中的选项卡控件几乎始终使用RoundedSouth或TriangularSouth。许多表格和其他选项卡控件,在这些控件中所有页面都基本相似,使用TriangularSouth,而当页面不同时(例如多页工具面板)使用RoundedSouth。QTabBar的默认形状是RoundedNorth。
QTabBar API中最重要的部分是currentChanged()信号。每当当前选项卡发生变化时(甚至在启动时,当前选项卡从“无”更改时),都会发出此信号。还有一个槽函数setCurrentIndex(),可用于以编程方式选择选项卡。currentIndex()函数返回当前选项卡的索引,count()函数返回选项卡的数量。
QTabBar类在类似QAbstractButton的方式下创建自动助记键;例如,如果一个选项卡的标签是“&Graphics”,那么Alt+G将成为切换到该选项卡的快捷键。
以下虚函数可能需要重新实现,以调整外观和感觉或在每个选项卡中存储额外数据:
tabSizeHint()
计算选项卡的大小。
tabInserted()
通知有一个新的选项卡被添加。
tabRemoved()
通知有一个选项卡被删除。
tabLayoutChange()
通知选项卡已重新布局。
paintEvent()
绘制所有选项卡。
对于子类,可能还需要tabRect()
函数,它返回单个选项卡的可视几何形状。
常用函数
枚举
- Shape
: 用于定义选项卡的外观形状,包括RoundedNorth
、RoundedSouth
、TriangularNorth
和TriangularSouth
等选项。
成员函数
addTab()
: 添加一个新的选项卡,并返回该选项卡的索引。insertTab()
: 在指定位置插入一个新的选卡,并返回该选项卡的索引。removeTab()
: 移除指定索引位置的选项卡。setTabText()
: 设置指定索引位置的选项卡的文本。setTabIcon()
: 设置指定索引位置的选项卡的图标。setCurrentIndex()
: 设置当前选中的选项卡的索引。count()
: 返回选项卡栏中选项卡的数量。
信号
currentChanged(int index)
: 当当前选项卡发生变化时发出的信号,传递当前选项卡的索引。
槽
tabChanged(int index)
: 自定义槽函数,用于响应选项卡改变的事件。
此外还有一些常用的成员函数包括:
setTabToolTip()
: 设置指定索引位置的选项卡的工具提示。setTabWhatsThis()
: 设置指定索引位置的选项卡的WhatsThis帮助文本。setTabEnabled()
: 启用或禁用指定索引位置的选项卡。tabText()
: 返回指定索引位置的选项卡的文本。tabIcon()
: 返回指定索引位置的选项卡的图标。tabToolTip()
: 返回指定索引位置的选项卡的工具提示。tabWhatsThis()
: 返回指定索引位置的选项卡的WhatsThis帮助文本。
通过使用这些成员函数、信号和槽,可以实现对选项卡的添加、删除、修改以及选中状态的控制与响应。
示例
以下示例,实现了使用QTabBar类创建一个选项卡栏和处理选项卡的切换:
#include <QApplication>
#include <QTabBar>
#include <QMessageBox>int main(int argc, char *argv[])
{QApplication app(argc, argv);// 创建一个主窗口QWidget window;window.setWindowTitle("Tab Bar Example");// 创建一个选项卡栏QTabBar tabBar(&window);// 添加选项卡tabBar.addTab("Tab 1");tabBar.addTab("Tab 2");tabBar.addTab("Tab 3");// 设置当前选中的选项卡tabBar.setCurrentIndex(0);// 连接信号currentChanged()到槽函数,处理选项卡的切换QObject::connect(&tabBar, &QTabBar::currentChanged, [&](int index) {QMessageBox::information(&window, "Tab Changed", "Switched to Tab " + QString::number(index + 1));});// 设置选项卡栏的布局和大小tabBar.setGeometry(20, 20, 200, 30);// 显示窗口window.show();return app.exec();
}
示例创建了一个主窗口,并在主窗口中添加了一个名为"Tab Bar Example"的标题。然后,创建了一个QTabBar控件,并添加了三个选项卡。
通过设置setCurrentIndex()方法,将当前选定的选项卡设置为第一个选项卡。
使用QObject::connect()来连接QTabBar的currentChanged()信号到一个lambda表达式,以处理选项卡的切换事件,并通过QMessageBox显示切换的选项卡的信息。
最后,使用setGeometry()方法设置选项卡栏的布局和大小,并显示主窗口。
效果:
运行示例,创建一个带有选项卡栏的窗口。当切换选项卡时,将会弹出一个消息框显示当前选中的选项卡的信息。
相关文章:

【Qt控件之QTabBar】介绍及使用
概述 QTabBar类提供了一个选项卡栏,例如用于选项卡对话框。 QTabBar非常简单易用,它使用预定义的形状绘制选项卡,并在选择选项卡时发出信号。它可以被子类化以调整外观和感觉。Qt还提供了一个实现好的QTabWidget。 每个选项卡具有一个tabT…...

最新Tuxera NTFS2023最新版Mac读写NTFS磁盘工具 更新详情介绍
Tuxera NTFS for Mac是一款Mac系统NTFS磁盘读写软件。在系统默认状态下,MacOSX只能实现对NTFS的读取功能,Tuxera NTFS可以帮助MacOS 系统的电脑顺利实现对NTFS分区的读/写功能。Tuxera NTFS 2023完美兼容最新版本的MacOS 11 Big Sur,在M1芯片…...
AndroidX使用Paho MQTT报找不到android/support/v4/content/LocalBroadcastManager
网上有直接引用support-v4包的,但我用的AndroidX,不能为这个类再引用support-v4 直接自己创建这个类,把androidx.localbroadcastmanager.content.LocalBroadcastManager改改就行。 虽然奇葩但能解决问题 package android.support.v4.content…...

Filter与Listener(过滤器与监听器)
1.Filter 1.过滤器概述 过滤器——Filter,它是JavaWeb三大组件之一。另外两个是Servlet和Listener 它可以对web应用中的所有资源进行拦截,并且在拦截之后进行一些特殊的操作 在程序中访问服务器资源时,当一个请求到来,服务器首…...

【刷题篇】反转链表
文章目录 一、206.反转链表二、92.反转链表 ||三、25. K 个一组翻转链表 一、206.反转链表 class Solution { public://使用头插//三个指针也可以ListNode* reverseList(ListNode* head) {if(headnullptr)return nullptr;ListNode* curhead;ListNode* newheadnew ListNode(0);L…...

【C语言小游戏--猜数字】
文章目录 前言1.游戏描述2.代码实现2.1打印菜单2.2构建基础框架2.3玩游戏2.3.1生成随机数2.3.1.1rand()2.3.1.2srand()2.3.1.3time() 2.3.2game() 2.4自己设定猜的次数 3.完整代码 前言 猜数字小游戏是我们大多数人学习C语言时都会了解到的一个有趣的C语言小游戏,下…...
Vue计算属性computed和监听watch
1.计算属性 初衷:为了解决模块里面有太多的计算逻辑让模版难以维护。 计算属性可以依赖一个数据也可以依赖多个数据的变化 使用场景: 商品单价和数量改变时,商品总价更改。如果写在方法里面,那么每次修改商品单价和数量时都会…...

HTTP介绍 原理 消息结构 客户端请求 服务器响应 HTTP状态码
一、HTTP介绍二、HTTP工作原理HTTP三点注意事项 三、HTTP消息结构四、客户端请求消息五、服务器响应消息HTTP请求方法 七、HTTP响应头信息八、HTTP状态码(HTTP Status Code)下面是常见的HTTP状态码:HTTP状态码分类HTTP状态码列表 一、HTTP介绍…...

linux性能分析(五)如何学习linux性能优化
一 如何学习linux性能优化 强调: 由于知识记忆曲线以及某些知识点不常用,所以一定要注重复习思考: 如何进行能力转义以及能力嫁接? --> 真正站在巨人的肩膀上性能调优的目的: 不影响系统稳定性的资源最大利用化补充: 性能…...
1402. 做菜顺序 --力扣 --JAVA
题目 一个厨师收集了他 n 道菜的满意程度 satisfaction ,这个厨师做出每道菜的时间都是 1 单位时间。 一道菜的 「 like-time 系数 」定义为烹饪这道菜结束的时间(包含之前每道菜所花费的时间)乘以这道菜的满意程度,也就是 time[i…...
Springboot踩坑-request body重复读问题
背景 在一次业务开发中,由于需要在拦截器中对一个http请求中request body内容做解析和判断,所以用了httpServletRequest的getInputStream解析了request body内容,之后导致了拦截器处理成功后,原来的业务接口处报request body not…...

C++ 类和对象(六)赋值运算符重载
1 运算符重载 C为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数, 也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。 函数名字为:关键字operator后面接需…...
rust学习-trait std::cmp::PartialEq、Eq、PartialOrd、Ord
PartialEq 介绍 pub trait PartialEq<Rhs = Self> whereRhs: ?Sized, {// Required method,后文有讲解这个注释fn eq(&self, other: &Rhs) -> bool;// Provided method,后文有讲解这个注释fn ne(&self, other: &Rhs) -> bool {... } }x.eq(y)…...
k8s pod根据指标自动扩缩容举例
目录 基于 内存 指标实现pod自动扩缩容 举例配置 基于 cpu 指标实现pod自动扩缩容 举例配置 基于请求数(次/秒) 指标实现pod自动扩缩容 举例配置 基于 http请求响应时间 (ms) 指标实现pod自动扩缩容 举例配置 基于 Java GC暂停时间 (ms) 指标实现…...
深、浅拷贝之间的关系
深、浅拷贝之间的关系 什么是赋值 赋值是将某一数值或对象赋给某个变量的过程,分为下面 2 部分 基本数据类型:赋值,赋值之后两个变量互不影响引用数据类型:赋址,两个变量具有相同的引用,指向同一个对象&…...

服务器数据恢复-某银行服务器硬盘数据恢复案例
服务器故障&分析: 某银行的某一业务模块崩溃,无法正常使用。排查服务器故障,发现运行该业务模块的服务器中多块硬盘离线,导致上层应用崩溃。 故障服务器内多块硬盘掉线,硬盘掉线数量超过服务器raid阵列冗余级别所允…...

仪器器材经营小程序商城的作用是什么
互联网发展下,数字化转型已经成为常态,仅依赖传统线下经营模式将很难再增长。 作为产品销售及客户维护度高的仪器器材行业,拥有自营商城平台是必要的,不仅可以解决以上难题,还利于打造自身品牌多渠道传播,…...

京东数据分析:2023年9月京东洗烘套装品牌销量排行榜!
鲸参谋监测的京东平台9月份洗烘套装市场销售数据已出炉! 根据鲸参谋平台的数据显示,今年9月份,京东平台洗烘套装的销量为7100,环比下降约37%,同比增长约87%;销售额为6000万,环比下降约48%&#…...

论文阅读-多目标强化学习-envelope MOQ-learning
introduction 一种多目标强化学习算法,来自2019 Nips《A Generalized Algorithm for Multi-Objective Reinforcement Learning and Policy Adaptation》本文引用代码全部来源于论文中的链接。主要参考run_e3c_double.py文件 1 总体思想 1.将输入中加入多目标的偏…...
【原创】【考法总结】指针*与++结合的题目考法总结
代码均已调试出结果,放心食用,大致总共5种考法 【理论铺垫】①a[i]恒等价于(ai)即*(&a[0]i);i类似偏移量(别忘a代表数组首元素地址即&a[0]) ②*(&a[i])恒等价于a[i]:&a[i]表示a[i]的地址&a…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...