首页 > 其他分享 >Qt QTabWidget显示隐藏tab页方法(setTabVisible)

Qt QTabWidget显示隐藏tab页方法(setTabVisible)

时间:2024-02-19 19:47:43浏览次数:32  
标签:tempTab index widget Qt int TabWidget tab setTabVisible tabpageWidgets

QT中QTabWidget在Qt 5.15 引入了 setTabVisible方法

低版本实现方法

 1 //TabWidget
 2 class TabWidget : public QTabWidget
 3 {
 4     Q_OBJECT
 5  
 6 public:
 7  
 8     class widgetTab {
 9     public:            
10         QString text;
11         QWidget* widget;
12         bool visable;
13     };
14  
15     TabWidget(QWidget* parent = 0);    
16     ~TabWidget();
17     
18     bool showTab(int index);
19     bool hideTab(int index);
20  
21 protected:
22     virtual void tabInserted(int index);   
23  
24 private:
25     QList<widgetTab> _tabpageWidgets;
26  
27 };
 1 //TabWidget
 2 TabWidget::TabWidget(QWidget* parent)
 3 :QTabWidget(parent)
 4 {
 5  
 6 }
 7     
 8 TabWidget::~TabWidget()
 9 {
10  
11 }
12     
13 void TabWidget::tabInserted(int index)
14 {
15     QWidget *curr = widget(index);
16     
17     int realindex = -1;
18     
19     for(int x = 0; x < _tabpageWidgets.size(); x++)
20     {
21         const widgetTab &tempTab = _tabpageWidgets.at(x);
22         
23         if(tempTab.widget == curr)
24         {
25             realindex = x;
26             break;
27         }
28     }    
29         
30     if(realindex == -1)
31     {      
32   
33         widgetTab tempTab;
34         QString text =this->tabBar()->tabText(index);
35         QIcon icon = this->tabBar()->tabIcon(index);
36         tempTab.text = text;
37         tempTab.widget = curr;
38         tempTab.visable = true;
39         _tabpageWidgets.append(tempTab);
40     }    
41 }
42  
43  
44 bool TabWidget::showTab(int index)
45 {
46     
47     if(index >= 0 && index < _tabpageWidgets.size())
48     {    
49         widgetTab &tempTab = _tabpageWidgets[index];
50             
51         if(tempTab.visable == false)
52         {
53             this->insertTab(index, tempTab.widget, tempTab.text);
54             tempTab.visable = true;
55             return true;
56         }
57     }
58     
59     return false;
60 }
61  
62 bool TabWidget::hideTab(int index)
63 {
64     if(index >= 0 && index < _tabpageWidgets.size())
65     {
66         widgetTab &tempTab = _tabpageWidgets[index];
67         
68         int idx = indexOf(tempTab.widget);
69         
70         if(idx >= 0)
71         {
72             this->removeTab(idx);
73             tempTab.visable = false;
74             return true;
75         }
76     }
77     
78     return false;
79 }

 

标签:tempTab,index,widget,Qt,int,TabWidget,tab,setTabVisible,tabpageWidgets
From: https://www.cnblogs.com/ybqjymy/p/18021802

相关文章

  • Qt error: LNK2001: 无法解析的外部符号 “public: virtual struct QMetaObject const
    简介  通过QtCreator开发一个动态库,最开始希望只是一个简单的纯C++的动态库,就没有继承QObject,也没有写Q_OBJECT宏。编译时就会报:LNK2001:无法解析的外部符号public:virtualstructQMetaObjectconst。绕了不少弯子,终于解决了,把原因分析进行个整理。面试有个问题:Qt信号槽机......
  • Qt error: LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const
    这个问题总是在编译的不经意间出现,而且一出一大片,很烦。作为新手出了问题可定要在网上找答案,但是总是发现别人的解决方法解决不了自己的问题,唉~在这个问题上大家大家提出的大多数是.h.cpp文件不对应、.h中声明的文件在.cpp文件中没有实现、函数声明在了.cpp文件中等等一......
  • Mac下设置crontab定时任务一直不执行踩坑日记2
    一、问题描述在Mac下设置 crontab定时任务执行python脚本,一直失败,之前设置失败是因为python3的路径问题,需要写绝对路径才对,这次特意注意了这个问题,whichpython3找到python3的绝对路径,然后写了python3的绝对路径,但还是不行,后面在网上看是不是要修改.py文件权限问题,果然也有......
  • 探索AI视频生成新纪元:文生视频Sora VS RunwayML、Pika及StableVideo——谁将引领未来
    探索AI视频生成新纪元:文生视频SoraVSRunwayML、Pika及StableVideo——谁将引领未来由于在AI生成视频的时长上成功突破到一分钟,再加上演示视频的高度逼真和高质量,Sora立刻引起了轰动。在Sora横空出世之前,Runway一直被视为AI生成视频的默认选择,尤其是自去年11月推出第二代模型以......
  • Qt 使用QCryptographicHash做简单的数据加密
    在编写程序的时候经常会使用到一些加密的方法,在Qt中,提供了一些常用的加密方法:Md4,Md5,Sha1,Sha224,Sha256,Sha384,Sha512,Sha3_224,Sha3_256,Sha3_384,Sha3_512,如果我们需要使用这些加密方法时,可以直接使用Qt中的QCryptographicHash类进行加密。1#include<QCryptographic......
  • ProTable双击可编辑
    要实现在AntDesign的Table组件中双击单元格修改内容,你可以通过以下步骤来实现:创建一个React组件,并引入所需的依赖:npminstallantd编写示例代码:importReact,{useState}from'react';import{Table,Input}from'antd';constEditableTable=()=>{c......
  • 循环可变化的集合 数组 datatable 等 || c# winfrom DataGridView 动态UI下载功能
    Gif演示   分解步骤1,使用组件DataGridView2,使用DataSource来控制表格展示的数据来源(注意:来源需要是DataTable类型)3,需要用到异步线程。如果是不控制数据源的话,需要使用UI安全线程;(使用Control.Invoke或Control.BeginInvoke方法)4,DataGridView的列如果设置图片,尽量代码......
  • Qt 项目实战:基于QMediaPlayer播放器
    QMediaPlayer开发视频播放器Q:我们为何不使用QMediaPlayer?A:QMediaPlayer支持的编解码库太少;QMediaPlayer在windows中解码调用的是DirectShow,在Linux中调用的是GStreamer;相对Windows而言GStreamer扩展编解码库比较方便,但是windows中的DirectShow太老了,DemuxerDecoder都比较麻......
  • Qt 哈希加密 QCryptographicHash
    QCryptographicHash类提供了生成密码散列的方法。该类可以用于生成二进制或文本数据的加密散列值。目前支持MD4、MD5、SHA-1、SHA-224、SHA-256、SHA-384和SHA-512。共有类型枚举QCryptographicHash::Algorithm:公共函数voidaddData(constchar*data,intlength)......
  • Qt 项目实战:电子时钟
    电子时钟隐藏widget边框this->setWindowFlags(Qt::FramelessWindowHint);//隐藏边框实时跟踪鼠标this->setMouseTracking(true);//实时跟踪鼠标通过信号与槽来刷新时针分针秒针状态connect(timer,SIGNAL(timeout()),this,SLOT(update()));鼠标左键按下移动窗......