【QT入门】 QTabWidget各种常见用法详解

往期回顾:

【QT入门】 Qt代码创建布局之分裂器布局详解-CSDN博客

【QT入门】 Qt代码创建布局之setLayout使用-CSDN博客

【QT入门】 Qt代码创建布局之多重布局变换与布局删除技巧-CSDN博客

 【QT入门】 QTabWidget各种常见用法详解

一般来说,学一个新的控件,首先要看他是怎么构造的,其次看怎么用,常用的方法,然后要去看他的信号函数,特别是熟悉常用方法和信号。而且ui界面创建和手动代码创建都要学会。

一、UI界面创建

ui界面创建Tab Widget是很简单的,找到Tab Widget拖动到窗口上即可。

在里面可以实现增加页,删除页的基本功能,ui操作简单明了,还很容易实现。

二、手动代码创建 

我们重点看怎么用手动代码去创建

1、最终效果

可以看到我们建立了四个tab页面,并为每个tab页面设置了不同的样式,而且里面有一个页面还是用一个单独的类写的,这意味着我们可以对这个页面进行ui设计,然后直接创建类对象放进来即可。

2、常见用法

2.1.添加自定义tab
1.添加自定义tab
int insertTab(int index, QWidget *widget, const QString &);
int insertTab(int index, QWidget *widget, const QIcon& icon, const QString &label);

三个参数分别是:索引、添加的widget类、显示的文字,下面多的一个参数是图标 。

2.2.设置tab上的关闭图标
2、设置tab上的关闭图标pTabW->setTabsClosable(true);
2.3.设置tab形状
3、设置tab形状,梯形Triangular或者圆形RoundedpTabW->setTabShape(QTabWidget::Triangular);
2.4.设置tab位置
4、还可以设置tab位置,上北下南都可以pTabW->setTabPosition(QTabWidget::North);
2.5.鼠标悬浮显示信息
5、鼠标悬浮上去会显示信息pTabW->setTabToolTip(1,"this is tab01");
2.6.新建类添加tab
6、我们还可以新建一个Qt设计师界面类,这样我们就可以添加一个tab的同时,用ui来设计这个tab里的widget//自己再创建一个widget放进去,也就意味着我可以在widget上用uiForm *f = new Form;pTabW->insertTab(3,f,"tab4");
2.7.信号函数
7、信号函数:
Q_SIGNALS:void currentChanged(int index);//页面改变信号void tabCloseRequested(int index);//关闭信号void tabBarClicked(int index);//点击信号void tabBarDoubleClicked(int index);//双击信号

用关闭信号的前提是,在前面用pTabW->setTabsClosable(true);设置了关闭图标 

几个信号怎么用是都很简单的,注意其中很关键一个参数,index索引,这个是找到对应tab的标识

  connect(pTabW,&QTabWidget::currentChanged,[=](int index){qDebug()<<"currentChanged index ="<<index;});

3、完整示例代码 

3.1 Widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private:Ui::Widget *ui;
};
#endif // WIDGET_H
3.2 Widget.cpp
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QHBoxLayout * pHLay = new QHBoxLayout(this);QTabWidget * pTabW = new QTabWidget(this);//设置tab上的关闭图标pTabW->setTabsClosable(true);//设置tab形状pTabW->setTabShape(QTabWidget::Triangular);//还可以设置tab位置pTabW->setTabPosition(QTabWidget::North);//创建三个widget放进去QWidget * w1 =new QWidget;w1->setStyleSheet("background-color:rgb(122,122,122)");QWidget * w2 =new QWidget;w2->setStyleSheet("background-color:rgb(222,222,222)");QWidget * w3 =new QWidget;w3->setStyleSheet("background-color:rgb(22,22,22)");//int insertTab(int index, QWidget *widget, const QString &);//int insertTab(int index, QWidget *widget, const QIcon& icon, const QString &label);//除了放文字还可以放图标pTabW->insertTab(0,w1,"tab1");pTabW->insertTab(1,w2,"tab2");pTabW->insertTab(2,w3,"tab3");//自己再创建一个widget放进去,也就意味着我可以在widget上用uiForm *f = new Form;pTabW->insertTab(3,f,"tab4");//鼠标悬浮上去会显示信息pTabW->setTabToolTip(1,"this is tab01");pHLay->addWidget(pTabW);/*
Q_SIGNALS:void currentChanged(int index);//页面改变信号void tabCloseRequested(int index);//关闭信号void tabBarClicked(int index);//点击信号void tabBarDoubleClicked(int index);//双击信号*///信号槽试试TabWidget的几个信号connect(pTabW,&QTabWidget::currentChanged,[=](int index){qDebug()<<"currentChanged index ="<<index;});connect(pTabW,&QTabWidget::tabCloseRequested,[=](int index){qDebug()<<"tabCloseRequested index ="<<index;pTabW->removeTab(index);});connect(pTabW,&QTabWidget::tabBarClicked,[=](int index){qDebug()<<"tabBarClicked index ="<<index;//pTabW->removeTab(index);});}

需要注意的是我自己创建了一个Form类的并创建对象放进去,大家如果要运行代码,也需要自己建一个,要不然就直接删除这部分代码。 


都看到这里了,点个赞再走呗朋友~

加油吧,预祝大家变得更强!

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

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

相关文章

报错there is no HDFS_NAMENODE_USER defined

在Hadoop安装目录下找到sbin文件夹&#xff0c;修改里面的四个文件 1、对于start-dfs.sh和stop-dfs.sh文件&#xff0c;添加下列参数&#xff1a; HDFS_DATANODE_USERroot HDFS_DATANODE_SECURE_USERhdfs HDFS_NAMENODE_USERroot HDFS_SECONDARYNAMENODE_USERroot 2、对于st…

2024-2029年中国中子探测器行业市场深度调研及发展前景预测报告

中子探测器可应用范围广泛 全球市场规模持续扩大 中子探测器&#xff0c;是一种检测中子辐射的仪器&#xff0c;采用中子吸收材料&#xff0c;利用中子与材料相互作用&#xff0c;来检测是否存在中子以及中子能量强度。中子是不带电荷的粒子&#xff0c;无法利用电离辐射探测器…

20221124 kafka实时数据写入Redis

一、上线结论 实现了将用户线上实时浏览的沉浸式视频信息&#xff0c;保存在Redis中这样一个功能。为实现沉浸式视频离线推荐到实时推荐提供了强有力的支持。目前只是应用在沉浸式场景&#xff0c;后续也能扩展到其他所有场景。用于两个场景&#xff1a;&#xff08;1&#xf…

2024年天津财经大学珠江学院退役大学生士兵专升本专业课报名须知

天津财经大学珠江学院2024年高职升本科&#xff08;面向退役大学生士兵&#xff09;职业技能综合考查报考须知 一、报名条件 报考天津财经大学珠江学院2024年高职升本科职业技能综合考查的退役大学生士兵应符合天津市及我院规定的报考资格。考生须完成天津市高职升本科文化考…

数据结构/C++:位图 布隆过滤器

数据结构/C&#xff1a;位图 & 布隆过滤器 位图实现应用 布隆过滤器实现应用 哈希表通过映射关系&#xff0c;实现了O(1)的复杂度来查找数据。相比于其它数据结构&#xff0c;哈希在实践中是一个非常重要的思想&#xff0c;本博客将介绍哈希思想的两大应用&#xff0c;位图…

HTTPS:原理、使用方法及安全威胁

文章目录 一、HTTPS技术原理1.1 主要技术原理1.2 HTTPS的工作过程1.2.1 握手阶段1.2.2 数据传输阶段 1.3 CA证书的签发流程1.4 HTTPS的安全性 二、HTTPS使用方法三、HTTPS安全威胁四、总结 HTTPS&#xff08;全称&#xff1a;Hyper Text Transfer Protocol over Secure Socket …

git提交-分支开发合并-控制台操作

git提交-分支开发合并-控制台操作 git的基本概念工作区、暂存区和版本库工作区&#xff1a;就是你在电脑里能看到的目录&#xff08;隐藏目录 .git不算工作区&#xff09;。暂存区&#xff1a;英文叫 stage 或 index。一般存放在本地的.git目录下的index 文件&#xff08;.git/…

036—pandas 按行将列名根据值由大到小排序

前言 数据处理中&#xff0c;按行排列的列名可以提供更直观的数据探索和分析方式。 你可以逐行查看列名&#xff0c;了解每列的含义和特征&#xff0c;有助于更好地理解数据集的结构和内容。 需求&#xff1a; 需要增加一列「分布方式」&#xff0c;每行的值是本行基金名称对…

双指针算法:三数之和

文章目录 一、[题目链接&#xff1a;三数之和](https://leetcode.cn/problems/3sum/submissions/515727749/)二、思路讲解三、代码演示 先赞后看&#xff0c;养成习惯&#xff01;&#xff01;&#xff01;^ _ ^<3 ❤️ ❤️ ❤️ 码字不易&#xff0c;大家的支持就是我坚持…

对BSV区块链网络访问规则NAR通俗易懂的解释

​​发表时间&#xff1a;2024年2月21日 我们可以把BSV区块链网络想象成在公园里举办的一场大型公共足球比赛。虽然这是一场友谊赛&#xff0c;但在比赛前&#xff0c;每个人都要理解并同意基本规则。举例来说&#xff0c;除了守门员之外&#xff0c;任何球员不得用手触球。 在…

JetBrains全家桶激活,分享 WebStorm 2024 激活的方案

大家好&#xff0c;欢迎来到金榜探云手&#xff01; WebStorm公司简介 JetBrains 是一家专注于开发工具的软件公司&#xff0c;总部位于捷克。他们以提供强大的集成开发环境&#xff08;IDE&#xff09;而闻名&#xff0c;如 IntelliJ IDEA、PyCharm、和 WebStorm等。这些工具…

【动手学深度学习】深入浅出深度学习之线性神经网络

目录 &#x1f31e;一、实验目的 &#x1f31e;二、实验准备 &#x1f31e;三、实验内容 &#x1f33c;1. 线性回归 &#x1f33b;1.1 矢量化加速 &#x1f33b;1.2 正态分布与平方损失 &#x1f33c;2. 线性回归的从零开始实现 &#x1f33b;2.1. 生成数据集 &#x…

Linux:文件增删 文件压缩指令

Linux&#xff1a;文件增删 & 文件压缩指令 文件增删touch指令mkdir指令cp指令rm指令rmdir指令 文件压缩zip & unzip 指令tar指令 文件增删 touch指令 功能&#xff1a;touch命令参数可更改文档或目录的日期时间&#xff0c;包括存取时间和更改时间&#xff0c;或者新…

离线数仓(八)【DWD 层开发】

前言 1、DWD 层开发 DWD层设计要点&#xff1a; &#xff08;1&#xff09;DWD层的设计依据是维度建模理论&#xff08;主体是事务型事实表&#xff08;选择业务过程 -> 声明粒度 -> 确定维度 -> 确定事实&#xff09;&#xff0c;另外两种周期型快照事实表和累积型…

第19篇:基本RS锁存器

Q&#xff1a;本期开始我们来设计实现时序逻辑电路&#xff0c;首先来设计由与非门构成的基本RS锁存器。 A&#xff1a;基本RS锁存器工作原理&#xff1a;锁存器的2个输入端均为低电平有效&#xff0c;一般情况下&#xff0c;2个输入端均为1时输出状态维持不变&#xff0c;只有…

JWT认证原理

简介&#xff1a; JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally …

【信号处理】基于DGGAN的单通道脑电信号增强和情绪检测(tensorflow)

关于 情绪检测&#xff0c;是脑科学研究中的一个常见和热门的方向。在进行情绪检测的分类中&#xff0c;真实数据不足&#xff0c;经常导致情绪检测模型的性能不佳。因此&#xff0c;对数据进行增强&#xff0c;成为了一个提升下游任务的重要的手段。本项目通过DCGAN模型实现脑…

基于STC12C5A60S2系列1T 8051单片机的按键单击长按实现互不干扰增加减少数值应用

基于STC12C5A60S2系列1T 8051单片机的按键单击长按实现互不干扰增加减少数值应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍基于STC12C5A60S2系列1T 8051单片机的…

iscsi网络协议(连接硬件设备)

iscsi概念 iscsi是一种互联网协议&#xff0c;用于将存储设备&#xff08;如硬盘驱动器或磁带驱动器&#xff09;通过网络连接到计算机。它是一种存储区域网络&#xff08;SAN&#xff09;技术&#xff0c;允许服务器通过网络连接到存储设备&#xff0c;就像它们是本地设备一样…