【Qt控件之QTabBar】介绍及使用

news2024/12/24 2:57:54

概述

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: 用于定义选项卡的外观形状,包括RoundedNorthRoundedSouthTriangularNorthTriangularSouth等选项。

成员函数
  • 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()方法设置选项卡栏的布局和大小,并显示主窗口。

效果:
运行示例,创建一个带有选项卡栏的窗口。当切换选项卡时,将会弹出一个消息框显示当前选中的选项卡的信息。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1120339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图——邻接表

图的邻接表表示法&#xff08;有向图&#xff09; 实现绿色的有向图 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <corecrt_malloc.h>#define Max 100//顶点数量最大值typedef struct ArcNode {//边信息int VNode_index;//顶点下标ArcNode…

MySQL索引全解:从理论到实践,打造高效查询的指南

文章目录 索引的数据结构Hash表有序数组树 详细聊聊BTreeBTree的特点树的度&#xff08;宽度&#xff09;可以很大叶子节点存储数据叶子节点双向指针记录 聚簇索引聚簇索引的优点聚簇索引的缺点 覆盖索引如何利用覆盖索引 普通索引与唯一索引的选择查询更新change bufferchange…

从入门到精通,30天带你学会C++【第八天:函数及洛谷精选题目讲解】(学不会你找我)

目录 Everyday English 前言 函数 洛谷 P5736 【深基7.例2】质数筛 分析题意 思路点拨 AC代码 AC截图 结尾 Everyday English Winners never quit! 胜者永不言弃&#xff01; 前言 这节课我们来学习函数&#xff0c;虽然我断更了几周&#xff0c;但我还是要把最…

三十六、【进阶】show profiles分析

1、profiles &#xff08;1&#xff09;详情 可以帮助清楚的展现&#xff0c;每一条SQL语句的执行耗时&#xff0c;以及时间都耗费到哪里去了 &#xff08;2&#xff09;基础语句 2、查看是否支持profiles mysql> select have_profiling; ------------------ | have_prof…

【LeetCode力扣】234 快慢指针 | 反转链表 | 还原链表

目录 1、题目介绍 2、解题思路 2.1、暴力破解法 2.2、快慢指针反转链表 1、题目介绍 原题链接&#xff1a; 234. 回文链表 - 力扣&#xff08;LeetCode&#xff09; 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1]输出&#xff1a;true 示例 2&#xff1a; 输入&am…

自然语言处理---Transformer机制详解之ELMo模型介绍

1 ELMo简介 ELMo是2018年3月由华盛顿大学提出的一种预训练模型. ELMo的全称是Embeddings from Language Models.ELMo模型的提出源于论文<< Deep Contextualized Word Representations >>.ELMo模型提出的动机源于研究人员认为一个好的预训练语言模型应该能够包含丰…

42904-2023 金属和合金的腐蚀 海水管路动水腐蚀试验

1 范围 本文件规定了在天然海水或人工海水中控制流速、温度模拟管路动水腐蚀试验方法。 本文件适用于板状试样、管状试样及管件等在天然海水或人工海水中进行的管路动水腐蚀试验。 2 规范性引用文件 下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中…

在pytorch中对于张量维度的理解

原文参考链接&#xff1a; https://blog.csdn.net/qq_36930921/article/details/121670945. https://zhuanlan.zhihu.com/p/356951418 张量的计算&#xff1a;https://zhuanlan.zhihu.com/p/140260245 学习过程中对知识的补充学习&#xff0c;谨防原文失效&#xff0c;请大家支…

MySQL——练习

MySQL 一、练习要求二、练习过程 一、练习要求 创建表并插入数据&#xff1a; 字段名数据类型主键外键非空唯一自增idINT是否是是否nameVARCHAR(50)否否是否否glassVARCHAR(50)否否是否否 sch 表内容 id name glass 1 xiaommg glass 1 2 xiaojun glass 21、创建一个可以统计…

探究物联网技术的核心知识点:传感器、嵌入式系统和数据分析

文章目录 &#x1f31f; 物联网技术&#x1f34a; 传感器&#x1f34a; 嵌入式系统&#x1f34a; 数据分析&#x1f34a; 总结 &#x1f4d5;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约…

vue2 mixins混入

1.mixins混入 在vue中提供了一种复用性的操作&#xff0c;所混入的对象包含任意组件的选项&#xff08;data|computed&#xff0c;生命周期|watch&#xff0c;methods&#xff09; 2.mixins使用基本规则&#xff08;选项合并冲突&#xff09; data | computed&#xff1a;数据…

Dotnet工具箱:开源、免费的纯前端工具网站,带你探索10大工具分类和73个实时在线小工具

1. 前言 大家好&#xff0c;我是沙漠尽头的狼。 Dotnet工具箱是一个纯前端的、开源和免费的工具网站&#xff0c;周末我参考了开源项目it-tools&#xff0c;对网站界面文字进行了汉化&#xff0c;并重新部署了网站。该网站共有10大工具分类&#xff0c;提供了73个实时在线小工…

Java面向对象(基础)--package和import关键字的使用

文章目录 一、package关键字的使用1. 说明2. 包的作用3. JDK中主要的包 二、import关键字的使用 一、package关键字的使用 1. 说明 package:包package用于指明该文件中定义的类、接口等结构所在的包。语法格式 举例&#xff1a;pack1\pack2\PackageTest.java package pack1.…

PCB铺铜的那些事

PCB在所有设计内容都设计完成之后&#xff0c;通常还会进行最后一步的关键步骤&#xff0c;那就是铺铜。铺铜可以将主要的地&#xff08;GND&#xff0c;SGND&#xff08;信号地&#xff09;&#xff0c;AGND&#xff08;模拟地&#xff09;&#xff09;连接在一起。 在设计软件…

自动化运维ansible(ansible-playbook)

一、ansible-playbook的构成 Inventory&#xff1a;主机列表&#xff0c;表示剧本中的任务要应用在哪些主机上; Tasks&#xff1a;具体任务&#xff0c;即调用哪些模块完成操作&#xff0c;可以配置多个任务; Variables&#xff1a;变量&#xff0c;包含内置变量和自定义变量;…

5分钟搞懂Web3架构

Web3通过区块链基础设施管理用户数据&#xff0c;重构了用户和互联网平台之间的关系&#xff0c;定义了全新的构建互联网应用的架构模式。原文: Web3 Architecture Shubham DhageUnsplash Web 1.0 只读网站&#xff0c;如Yahoo!&#xff0c; MSN&#xff0c;谷歌等。 Web 2.0 …

设计模式:代理模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)

简介&#xff1a; 代理模式&#xff0c;它是一种结构型设计模式&#xff0c;它通过引入一个代理对象来控制对原始对象的访问。代理模式的主要目的是在保持原始对象完整性的同时&#xff0c;提供对原始对象的访问和控制。 代理模式包括以下三个角色&#xff1a; 抽象主题类&a…

EtherCAT主站SDO写报文抓包分析

0 工具准备 1.EtherCAT主站 2.EtherCAT从站&#xff08;本文使用步进电机驱动器&#xff09; 3.Wireshark1 抓包分析 1.1 报文总览 本文设置从站1的对象字典&#xff0c;设置对象字典主索引为0x2000&#xff0c;子索引为0x00&#xff0c;设置值为1500。主站通过发送SDO写报文…

Linux tmux使用总结

文章目录 1 tmux介绍2 tmux概念会话Sessions、窗口Windows、面板Panesstatus line中字段含义 3 Sessions会话管理新建会话断开当前会话进入之前的会话关闭会话查看所有的会话 4 tmux快捷指令系统指令窗口&#xff08;Windows&#xff09;指令面板&#xff08;Panes&#xff09;…

cec2013(python):麻雀搜索算法SSA求解CEC2013(提供完整python代码及参考文献)

一、麻雀搜索算法SSA求解cec2013 cec2013函数简介 CEC 2013 Special Session on Real-Parameter Optimization中共有28个测试函数维度可选择为10/30/50/100。 每个测试函数的详细信息如下表所示&#xff1a; 参考文献&#xff1a;[1] Liang J J , Qu B Y , Suganthan P N , …