【十八】【QT开发应用】标签页QTabWidget的常见用法

#include "widget.h" // 包含自定义的widget头文件
#include <QHBoxLayout> // 包含QHBoxLayout头文件,用于水平布局
#include <QTabWidget> // 包含QTabWidget头文件,用于创建标签页控件
#include <QDebug> // 包含QDebug头文件,用于调试输出widget::widget(QWidget *parent) // widget类的构造函数: QWidget(parent) // 调用基类QWidget的构造函数,传入父组件
{ui.setupUi(this); // 通过ui对象设置用户界面QHBoxLayout* HLayout = new QHBoxLayout(this); // 创建一个水平布局对象,并设置当前widget为其父组件QTabWidget* pTabWidget = new QTabWidget(this); // 创建一个标签页控件,并设置当前widget为其父组件pTabWidget->setTabsClosable(true); // 设置标签页可关闭pTabWidget->setMovable(true); // 设置标签页可移动pTabWidget->setTabPosition(QTabWidget::North); // 设置标签页位置在上方pTabWidget->setTabShape(QTabWidget::Triangular); // 设置标签页形状为三角形QWidget* widget1 = new QWidget; // 创建一个QWidget对象widget1->setStyleSheet("background-color:rgb(54,54,54);"); // 设置widget1的背景颜色为深灰色QWidget* widget2 = new QWidget; // 创建第二个QWidget对象widget2->setStyleSheet("background-color:rgb(54,154,54);"); // 设置widget2的背景颜色为绿色QWidget* widget3 = new QWidget; // 创建第三个QWidget对象widget3->setStyleSheet("background-color:rgb(54,54,154);"); // 设置widget3的背景颜色为蓝色pTabWidget->insertTab(0, widget1, "tab1"); // 将widget1作为第一个标签页添加到标签页控件中pTabWidget->insertTab(1, widget2, "tab2"); // 将widget2作为第二个标签页添加pTabWidget->insertTab(2, widget3, "tab3"); // 将widget3作为第三个标签页添加// pTabWidget->setTabVisible(2, false); // 注释掉的代码,用于隐藏第三个标签页,当前未启用pTabWidget->setTabToolTip(2, "this tap 2"); // 设置第三个标签页的工具提示HLayout->addWidget(pTabWidget); // 将标签页控件添加到水平布局中// 连接标签页控件的currentChanged信号到lambda表达式定义的槽函数,用于处理当前标签页变化事件connect(pTabWidget, &QTabWidget::currentChanged, [=](int index) {qDebug() << "index=" << index;});// 连接tabBarDoubleClicked信号到槽函数,用于处理标签栏双击事件connect(pTabWidget, &QTabWidget::tabBarDoubleClicked, [=](int index) {qDebug() << "tabBarDoubleClicked index=" << index;});// 连接tabBarClicked信号到槽函数,用于处理标签栏点击事件connect(pTabWidget, &QTabWidget::tabBarClicked, [=](int index) {qDebug() << "tabBarClicked index=" << index;});// 连接tabCloseRequested信号到槽函数,用于处理标签页关闭请求事件connect(pTabWidget, &QTabWidget::tabCloseRequested, [=](int index) {qDebug() << "tabCloseRequested index=" << index;pTabWidget->removeTab(index); // 响应关闭请求,删除指定索引的标签页});
}widget::~widget() // widget类的析构函数
{}

在这里插入图片描述

复盘

setTabsClosable 设置标签页是否可以被关闭

setTabsClosable 是 Qt 框架中 QTabWidget 类的一个成员函数,它用于设置标签页是否可以被关闭。当这个属性被设置为 true 时,每个标签页的右上角会显示一个关闭按钮,用户可以通过点击这个按钮来关闭相应的标签页。

setMovable 允许用户通过拖拽来改变标签页的顺序

setMovable 是 Qt 框架中 QTabWidget 类的一个成员函数,它的作用是允许用户通过拖拽来改变标签页的顺序。当 setMovable 设置为 true 时,用户可以通过鼠标拖动标签页到新的位置,从而改变标签页的顺序。

setTabPosition 设置标签页的位置

setTabPosition 是 Qt 框架中 QTabWidget 类的一个成员函数,用于设置标签页的位置。这个函数允许开发者控制标签页是在窗口的上方、下方、左侧还是右侧显示。

  • 设置标签页在上方:
    使用 QTabWidget::North 作为参数,可以将标签页设置在窗口的上方。

    pTabWidget->setTabPosition(QTabWidget::North);
    
  • 设置标签页在下方:
    使用 QTabWidget::South 作为参数,可以将标签页设置在窗口的下方。

    pTabWidget->setTabPosition(QTabWidget::South);
    
  • 设置标签页在左侧:
    使用 QTabWidget::West 作为参数,可以将标签页设置在窗口的左侧。

    pTabWidget->setTabPosition(QTabWidget::West);
    
  • 设置标签页在右侧:
    使用 QTabWidget::East 作为参数,可以将标签页设置在窗口的右侧。

    pTabWidget->setTabPosition(QTabWidget::East);
    

setTabShape 设置标签页的形状

setTabShape 是 Qt 框架中 QTabWidget 类的一个成员函数,用于设置标签页的形状。这个函数允许开发者自定义标签页的外观,以适应不同的设计需求和用户偏好。

  • 设置为普通矩形标签页:
    使用 QTabWidget::Rounded 作为参数,可以将标签页设置为带有圆角的矩形形状。

    pTabWidget->setTabShape(QTabWidget::Rounded);
    
  • 设置为三角形标签页:
    使用 QTabWidget::Triangular 作为参数,可以将标签页设置为三角形形状。这种形状通常用于需要更紧凑布局的界面。

    pTabWidget->setTabShape(QTabWidget::Triangular);
    

insertTab 添加一个新的标签页

insertTab 是 Qt 框架中 QTabWidget 类的一个成员函数,用于向标签页控件中添加一个新的标签页。这个函数允许你指定新标签页的索引位置、要添加的控件(通常是 QWidget 的子类),以及标签页的标题或图标。

添加标签页:
使用 insertTab(int index, QWidget *widget, const QString &text) 可以向 QTabWidget 中的指定位置插入一个标签页。其中 index 是新标签页的索引位置,widget 是要作为标签页内容的控件,text 是标签页的标题。

QWidget *newTabPage = new QWidget;
newTabPage->setStyleSheet("background-color: lightgray;");
pTabWidget->insertTab(0, newTabPage, "New Tab");

setTabToolTip 设置标签页工具提示

setTabToolTip 是 Qt 框架中 QTabWidget 类的一个成员函数,它用于为特定的标签页设置工具提示(tooltip)。当用户将鼠标悬停在标签页上时,工具提示会显示出来,提供有关该标签页的额外信息或说明。

设置工具提示文本:
使用 setTabToolTip(int index, const QString &tip) 可以为指定索引的标签页设置工具提示。其中 index 是标签页的索引,tip 是要显示的工具提示文本。

pTabWidget->setTabToolTip(0, "This is the first tab");

QTabWidget的四个信号

  1. currentChanged:

    • 信号声明: void QTabWidget::currentChanged(int index)
    • 触发时机: 当当前选中的标签页发生变化时,无论是通过用户点击、拖动还是程序代码更改,都会发出此信号,并带有新选中标签页的索引。
  2. tabBarDoubleClicked:

    • 信号声明: void QTabWidget::tabBarDoubleClicked(int index)
    • 触发时机: 当用户双击标签栏上的某个标签页时发出此信号,参数 index 是被双击的标签页的索引。
  3. tabBarClicked:

    • 信号声明: void QTabWidget::tabBarClicked(int index)
    • 触发时机: 当用户点击标签栏上的某个标签页时发出此信号,无论该点击是否导致了标签页的切换。参数 index 是被点击的标签页的索引。
  4. tabCloseRequested:

    • 信号声明: void QTabWidget::tabCloseRequested(int index)
    • 触发时机: 当用户点击了可关闭的标签页上的关闭按钮时发出此信号。参数 index 是请求关闭的标签页的索引。

结尾

最后,感谢您阅读我的文章,希望这些内容能够对您有所启发和帮助。如果您有任何问题或想要分享您的观点,请随时在评论区留言。
同时,不要忘记订阅我的博客以获取更多有趣的内容。在未来的文章中,我将继续探讨这个话题的不同方面,为您呈现更多深度和见解。
谢谢您的支持,期待与您在下一篇文章中再次相遇!

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

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

相关文章

医院人员管理项目01_下午,css

文章目录 层叠样式表在html文件中引入css样式表&#xff1a;2种方法如何设置样式&#xff1a;3种css选择器继承权重 层叠样式表 引入html网页中的方式&#xff0c;共3种。 行内样式&#xff08;内联样式&#xff09;&#xff1a;直接在html中设置 内部样式&#xff1a;css代…

学诚教育在线管理系统-计算机毕业设计源码98076

目 录 摘要 1 绪论 1.1 选题背景与意义 1.2开发现状 1.3论文结构与章节安排 2 开发环境及相关技术介绍 2.1 MySQL数据库 2.2 Tomcat服务器 2.3 Java语言 2.4 Spring Cloud框架介绍 3 教育在线管理系统系统分析 3.1 可行性分析 3.1.1 技术可行性分析 3.1.2 经济可…

【Proteus仿真】基于Stm32的八路抢答器~

【Proteus仿真】基于Stm32的八路抢答器~ 文档资料在购买后即可获得&#xff08;如有问题可通过微信公号或b站私信联系我&#xff09; 资料包括&#xff1a; 1. Proteus仿真源文件2. keil源代码功能描述: 1. 抢答时间设置显示2. 选手得分用时显示3. 选手数据查询/清楚4.抢答…

Java | Leetcode Java题解之第213题打家劫舍II

题目&#xff1a; 题解&#xff1a; class Solution {public int rob(int[] nums) {int length nums.length;if (length 1) {return nums[0];} else if (length 2) {return Math.max(nums[0], nums[1]);}return Math.max(robRange(nums, 0, length - 2), robRange(nums, 1,…

App UI性能测试 - PerfDog使用全教程

App 性能测试指标: 响应、内存、CPU、FPS、GPU渲染、耗电、耗流等。 PerfDog的性能数据更加全面,所以下面以PerfDog来介绍安装使用流程及测试数据的获取与分析。 官网: PerfDog | 全平台性能测试分析专家 第一步,先访问官网进行注册, 注册好账号后,点击下载PerfDog,下…

【算法笔记自学】第 7 章 提高篇(1)——数据结构专题(1)

7.1栈的应用 #include <iostream> #include <string> #include <stack> using namespace std;int main() {int n, x;string action;cin >> n;stack<int> s;for (int i 0; i < n; i) {cin >> action;if (action "push") {ci…

昇思25天学习打卡营第19天|Pix2Pix实现图像转换

1. 学习内容复盘 Pix2Pix概述 Pix2Pix是基于条件生成对抗网络&#xff08;cGAN, Condition Generative Adversarial Networks &#xff09;实现的一种深度学习图像转换模型&#xff0c;该模型是由Phillip Isola等作者在2017年CVPR上提出的&#xff0c;可以实现语义/标签到真实…

生活商城app微信小程序模板源码

红色的卷皮折扣电商app小程序&#xff0c;综合生活购物商城app小程序前端模板下载。包含&#xff1a;首页、分类、购物车、列表、商品详情、个人中心、优惠券、全部订单、生活超市专题等等。一套很全通用的商城app小程序模板。 生活商城app微信小程序模板源码

YOLOv8标签可视化

这一章主要是为了可视化YOLO标签设置的,为什么要进行可视化呢,因为很多时候我们标注好数据还需要进行转换成YOLO格式,这期间如果出现转换的错误,而我们没有去检查标签的话,有可能导致训练无法得到很好的一个结果,所以需要我们对YOLO标签进行可视化来检查标签的情况。 这部…

《梦醒蝶飞:释放Excel函数与公式的力量》9.5 IRR函数

9.5 IRR函数 IRR函数是Excel中用于计算内部收益率&#xff08;Internal Rate of Return, IRR&#xff09;的函数。内部收益率是评估投资项目盈利性的重要指标&#xff0c;它表示使投资项目的净现值&#xff08;NPV&#xff09;为零的折现率。 9.5.1 函数简介 IRR函数通过一系…

【免费数字孪生平台】零代码制作智慧农业蔬菜大棚可视化

一&#xff0e;智慧农业的价值 智慧农业&#xff0c;作为农业中的智慧经济形态&#xff0c;是现代科学技术与农业种植深度融合的产物。它通过将物联网、云计算、大数据、人工智能等现代信息技术集成应用于农业生产中&#xff0c;实现了农业生产的无人化、自动化和智能化管理。…

第十一节 动态面板加密解密显示

在原型中我们经常会遇到文件加密与解密显示问题&#xff0c;下面以一个简单案例来说明实现怎么切换明文与密文不同显示方式案例说明&#xff1b; 1、添加动态面板 2、设置加密与不加密 3、添加动作事项 注意为可见时要设置面板状态向前循环&#xff0c;上一项&#xff0c;否则…

“一稿多投”是学术不端,还是作者的合法权利?

【SciencePub学术】“一稿多投”一直被认为是不端的行为&#xff0c;但这个“规矩”是在纸质时代信息沟通不畅的情况下制定的&#xff0c;近年来有关取消这一观念的声音已振聋发聩&#xff01; 詹启智的《一稿多投是著作权人依法享有的合法权利一一兼论一稿多发后果的规制》一文…

3115.力扣每日一题7/2 Java

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;算法练习关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 目录 思路 解题方法 时间复杂度 空间复杂度 Code 总结 思路 这道题的…

PDM系统中物料分类与编码规则生成方案

在企业管理软件中&#xff0c;PDM系统是企业管理的前端软件&#xff0c;用于管理研发图纸、BOM等数据&#xff0c;然后生成相关物料表或BOM&#xff0c;递交给后端ERP系统进行生产管理。在PDM系统中&#xff0c;有两种方式可以生成物料编码。 1第一种是用户可以通过软件接口将…

浅谈MyBatis的工作原理以及核心流程

引言 在行内日常开发工作中&#xff0c;基于Java的研发项目会大量的与数据库做交互访问。传统方式是通过JDBC访问数据库&#xff0c;不仅需要繁琐的手工编写很多代码&#xff0c;增加了工程项目的复杂度&#xff0c;而且存在难以维护&#xff0c;配置不够灵活等特点。为解决传…

架构师学习理解和总结

1.架构设计理念 2.架构方法论 2.1需求分析 2.1.1常见需求层次 2.1.2 常见需求结果 2.1.3 需求与架构关系 2.2 领域分析 2.3 关键需求 2.4 概念架构设计 2.5 细化架构设计 2.6 架构设计验证 3.架构设计工具 3.1 DDD领域建模 3.2 41视图分析法 3.3 UML设计工具 4.架构师知…

EDI安全:如何在2024年保护您的数据免受安全和隐私威胁

电子数据交换&#xff08;EDI&#xff09;支持使用标准化格式在组织之间自动交换业务文档。这种数字化转型彻底改变了业务通信&#xff0c;消除了对纸质交易的需求并加速了交易。然而&#xff0c;随着越来越依赖 EDI 来传输发票、采购订单和发货通知等敏感数据&#xff0c;EDI …

利用canvas压缩图片

前情提要 页面打印导出pdf文件的时候&#xff0c;图片大小会影响pdf文件大小。 为了减小pdf文件大小&#xff0c;需要将图片压缩一下。在只有图片地址的情况下&#xff0c;将图片压缩后显示&#xff0c;一开始用的browser-image-compression插件&#xff0c;这是js压缩&#x…

Elasticsearch:Node.js ECS 日志记录 - Winston

这是继上一篇文章 “Elasticsearch&#xff1a;Node.js ECS 日志记录 - Pino” 的续篇。我们继续上一篇文章来讲述使用 Winston 包来针对 Node.js 应用生成 ECS 向匹配的日子。此 Node.js 软件包为 winston 记录器提供了格式化程序&#xff0c;与 Elastic Common Schema (ECS) …