【十八】【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.mzph.cn/news/868804.shtml

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

相关文章

数据中心的智能负载组,为什么以及做什么?

停电会因停机而造成巨大损失。根据电力研究所 &#xff08;EPRI&#xff09; 的数据&#xff0c;98% 的停电持续时间不到 10 秒。但这10秒是毁灭性的。由于每分钟闲置的成本约为 5,600 美元&#xff0c;公司投资于确保其基础设施连续性的系统。负载组是测试和确保所需连续性的基…

Python面试宝典第8题:二叉树遍历

题目 给定一棵二叉树的根节点 root &#xff0c;返回它节点值的前序遍历。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3] 示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[] 示例 3&#xff1a; 输入&#xff1a;root […

怎样在 PostgreSQL 中优化对大数值类型数据的计算?

文章目录 一、选择合适的数据类型二、索引优化三、查询语句优化四、数据库配置调整五、使用扩展功能六、示例七、总结 在 PostgreSQL 中处理大数值类型数据&#xff08;例如 BIGINT、NUMERIC 等&#xff09;的计算时&#xff0c;可能会遇到性能瓶颈。为了优化这些计算&#xff…

深度探讨:Facebook在全球范围内的社会影响力

Facebook作为全球最大的社交平台之一&#xff0c;不仅改变了人们的社交方式&#xff0c;还对全球社会产生了深远的影响。本文将从多个角度探讨Facebook在全球范围内的社会影响力&#xff0c;深入分析其对个人、社区和全球社会的多方面影响。 1. 信息传播与社交互动的革新 Fac…

语言模型的进化:从NLP到LLM的跨越之旅

在人工智能的浩瀚宇宙中&#xff0c;自然语言处理&#xff08;NLP&#xff09;一直是一个充满挑战和机遇的领域。随着技术的发展&#xff0c;我们见证了从传统规则到统计机器学习&#xff0c;再到深度学习和预训练模型的演进。如今&#xff0c;我们站在了大型语言模型&#xff…

政安晨:【Keras机器学习示例演绎】(五十三)—— 使用 TensorFlow 决策森林进行分类

目录 简介 设置 准备数据 定义数据集元数据 配置超参数 实施培训和评估程序 实验 1&#xff1a;使用原始特征的决策森林 检查模型 实验 2&#xff1a;目标编码决策森林 创建模型输入 使用目标编码实现特征编码 使用预处理器创建梯度提升树模型 训练和评估模型 实验…

社区6月月报 | Apache DolphinScheduler重要修复和优化记录

各位热爱Apache DolphinScheduler的小伙伴们&#xff0c;社区6月月报更新啦&#xff01;这里将记录Apache DolphinScheduler社区每月的重要更新&#xff0c;欢迎关注。 月度Merge Stars 感谢以下小伙伴上个月为Apache DolphinScheduler所做的精彩贡献&#xff08;排名不分先后…

矩阵式键盘最小需要多少个IO驱动

1. 概述 矩阵式键盘由于有其占用硬件资源少的优点有着极其广泛的应用&#xff0c;如PC键盘、电话按键、家用电器等等这类产品.矩阵键盘的基本原理如下所示&#xff08;仅是原理示例&#xff0c;实际实现上还会为每个按键加上防倒流的二极管解决“鬼影”问题&#xff09;&#x…

Windows下编译OpenSSL静态库

目录 1. 版本与下载地址 2. 下载与安装VS2015 3. 下载与安装Perl 4. 测试ActivePerl是否安装正确 5. 下载OpenSSL 6. 编译32位OpenSSL静态库 6.1 解压openssl-1.0.2l.tar.gz 6.2 打开VS2015 x86本机工具命令提示符 6.3 输入命令进入到openssl的目录中 6.4 执行配置命…

完美解决AttributeError: ‘DataFrame‘ object has no attribute ‘ix‘的正确解决方法,亲测有效!!!

完美解决AttributeError: ‘DataFrame’ object has no attribute ix’的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 亲测有效 完美解决AttributeError: DataFrame object has no attribute ix的正确解决方法&#xff0c;亲测有效&#xff01;&…

(十五)GLM库对矩阵操作

GLM简单使用 glm是一个开源的对矩阵运算的库&#xff0c;下载地址&#xff1a; https://github.com/g-truc/glm/releases 直接包含其头文件即可使用&#xff1a; #include <glad/glad.h>//glad必须在glfw头文件之前包含 #include <GLFW/glfw3.h> #include <io…

深入解析ROC曲线及其应用

深入解析ROC曲线及其应用 什么是ROC曲线&#xff1f; ROC曲线&#xff08;Receiver Operating Characteristic Curve&#xff09;&#xff0c;即受试者工作特征曲线&#xff0c;是一种用于评估分类模型性能的工具。它通过展示真阳性率&#xff08;TPR&#xff09;与假阳性率&…

免费制作GIF和实时网络监控工具

ScreenToGif 不允许你们还不知道的一款免费且实用好用的GIF动画制作工具软件。可以实时对区域窗口录制、编辑录制多功能模块&#xff0c;操作简单。 支持自定义增减重复帧数、调整循环播放次数、调整播放速度及删除重复帧。 支持对帧做二次编辑&#xff0c;可进行帧翻转、缩放…

政安晨【零基础玩转各类开源AI项目】基于Ubuntu系统部署ComfyUI:功能最强大、模块化程度最高的Stable Diffusion图形用户界面和后台

目录 ComfyUI的特性介绍 开始安装 做点准备工作 在Conda虚拟环境中进行 依赖项的安装 运行 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 零基础玩转各类开源AI项目 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&…

从数字化营销与运营视角:看流量效果的数据分析

基于数据打通的“全链路”营销是当下的“时髦”&#xff0c;应用它的前提是什么&#xff1f;深度营销和运营的关键数据如何获得&#xff1f;如何利用数据进行更精准的营销投放&#xff1f;如何利用数据优化投放的效果&#xff1f;如何促进消费者的转化&#xff0c;以及激活留存…

IDEA启动tomcat之后控制台出现中文乱码问题

方法1&#xff1a; 第一步&#xff1a;file--setting--Editor--File Encodings 注意页面中全部改为UTF-8&#xff0c;然后apply再ok 第二步&#xff1a;Run--Edit Configuration&#xff0c;将VM options输入以下值&#xff1a; -Dfile.encodingUTF-8 还是一样先apply再ok …

bdeaver mysql忘记localhost密码修改密码添加用户

描述 bdeaver可以连接当前的localhost数据库&#xff0c;但不知道数据库密码是什么。用这个再建一个用户&#xff0c;用来连接数据库 解决 1、在当前的数据库localhost右键&#xff0c;创建-用户 设置这个用户&#xff0c;密码 加权限 2、连接 用新的账号密码去连接&#x…

千古雄文《渔樵问对》原文、译文、解析

邵雍《渔樵问对》&#xff1a;开悟奇文&#xff0c;揭示世界的终极意义 【邵雍《渔樵问对》&#xff1a;开悟奇文&#xff0c;揭示世界的终极意义】 邵雍&#xff08;1011年1月21日&#xff0d;1077年7月27日&#xff0c;宋真宗大中祥符四年十二月二十五日戌时生至神宗熙宁十…

代谢组数据分析一:代谢组数据准备

介绍 该数据集是来自于Zeybel 2022年发布的文章_Multiomics Analysis Reveals the Impact of Microbiota on Host Metabolism in Hepatic Steatosis_ [@zeybel2022multiomics],它包含了多种组学数据,如: 微生物组(粪便和口腔) 宿主人体学指标 宿主临床学指标 宿主血浆代谢…

SpringCloud Alibaba Sentinel网关流量控制实践总结

官网地址&#xff1a;https://sentinelguard.io/zh-cn/docs/api-gateway-flow-control.html GitHub地址&#xff1a;GitHub Sentinel 网关限流 【1】概述 Sentinel 支持对 Spring Cloud Gateway、Zuul 等主流的 API Gateway 进行限流。 Sentinel 1.6.0 引入了 Sentinel API …