先看效果:

部分源码

#pragma once#include <QWidget>
#include <vector>
#include "ui_QtGuiTrapeTabBar.h"
#include "ITrapeTab.h"
#include "ITrapeTabAdd.h"//梯形标签class QtGuiOneTrape;class QtGuiTrapeTabBar : public QWidget, public ITrapeTab, public ITrapeTabAdd {Q_OBJECTpublic:QtGuiTrapeTabBar(QWidget *parent = Q_NULLPTR);~QtGuiTrapeTabBar();private:void init();void closeOneTab(QWidget* btn)override;void selectedOneTab(QWidget* btn)override;void addTrapeTab()override;private:Ui::QtGuiTrapeTabBar ui;std::vector<QtGuiOneTrape*> _guiOneTrapeList;
};
#include <QDebug>
#include <QMouseEvent>
#include "QtGuiTrapeTabBar.h"
#include "QtGuiOneTrapeDoubleClick.h"
#include "QtGuiTrapeAdd.h"QtGuiTrapeTabBar::QtGuiTrapeTabBar(QWidget *parent): QWidget(parent) {ui.setupUi(this);this->setMouseTracking(true);//默认为false,在false的情况下只有点击了之后才可以追踪鼠标的移动init();
}QtGuiTrapeTabBar::~QtGuiTrapeTabBar() {}void QtGuiTrapeTabBar::init() {QtGuiOneTrapeDoubleClick* trape1 = new QtGuiOneTrapeDoubleClick(this);QtGuiOneTrapeDoubleClick* trape2 = new QtGuiOneTrapeDoubleClick(this);QtGuiOneTrapeDoubleClick* trape3 = new QtGuiOneTrapeDoubleClick(this);_guiOneTrapeList.push_back(trape1);_guiOneTrapeList.push_back(trape2);_guiOneTrapeList.push_back(trape3);int num = _guiOneTrapeList.size();for (int i = 0; i < num; i++) {QtGuiOneTrape* oneTrape = _guiOneTrapeList.at(i);ui.horizontalLayoutTab->addWidget(oneTrape);}QtGuiTrapeAdd* trapeAdd = new QtGuiTrapeAdd(this);ui.horizontalLayoutAdd->addWidget(trapeAdd);
}void QtGuiTrapeTabBar::closeOneTab(QWidget* tabBar) {int num = _guiOneTrapeList.size();for (int i = 0; i < num; i++) {QtGuiOneTrape* oneTrape = _guiOneTrapeList.at(i);if (tabBar == oneTrape) {_guiOneTrapeList.erase(_guiOneTrapeList.begin() + i);break;}}tabBar->setParent(nullptr);//移除控件之前要置空ui.horizontalLayoutTab->removeWidget(tabBar);
}void QtGuiTrapeTabBar::selectedOneTab(QWidget* tabBar) {QtGuiOneTrape*tabBarBtn = dynamic_cast<QtGuiOneTrape*>(tabBar);int num = _guiOneTrapeList.size();for (int i = 0; i < num; i++) {QtGuiOneTrape* oneTrape = _guiOneTrapeList.at(i);oneTrape->setSelected(false);}tabBarBtn->setSelected(true);
}void QtGuiTrapeTabBar::addTrapeTab() {QtGuiOneTrapeDoubleClick* trape1 = new QtGuiOneTrapeDoubleClick(this);_guiOneTrapeList.push_back(trape1);ui.horizontalLayoutTab->addWidget(trape1);
}

如需要源码,请私信
aaa

QT自定义Tab标签页,可以删除、添加、修改和选中相关推荐

  1. vue中tab标签页keep-alive二级路由+删除指定缓存页面

    1.实现效果 2.keep-alive 2.1是什么: keep-alive 是 Vue 的内置组件,keep-alive 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们.和 transiti ...

  2. JavaScript面向对象—— 动态创建tab标签页

    昨天呢,介绍了js中类的概念,以及使用类创建对象的过程.今天就用js中的类实现一个小的功能,动态添加.删除标签页.emmmmm,也有点像tab栏切换,不过比tab栏切换多了添加和删除的功能. 案例说明 ...

  3. vue实现多个tab标签页的切换与关闭

    1.实现效果 2.实现原理 vuex,实现对当前激活项,当前tab列表,当前tab的translateX,当前缓存页,当前路由的状态管理. 将vuex中的数据保存到sessionStorage中,避免 ...

  4. php表格js特效,JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】

    本文实例讲述了JavaScript表格隔行变色和Tab标签页特效.分享给大家供大家参考,具体如下: 最近一直在看JavaScript知识,偶尔也穿插一点Jquery,感觉Jquery用起来真爽,减少了 ...

  5. html tab与jQuery,js与jquery分别实现tab标签页功能的方法

    本文实例讲述了js与jquery分别实现tab标签页功能的方法.分享给大家供大家参考,具体如下: 首先列出样式和html标签 *{margin: 0;padding: 0;} #myul li {li ...

  6. Vant Tab标签页+下拉刷新+上拉加载

    Vant Tab标签页+下拉刷新+上拉加载 <template><div class="invoicePickupBox"><div class=&q ...

  7. 微信小程序|Tab标签页

    欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章. 欢迎加入团队圈子!与作者面对面!直接点击! 问题描述 在使用小 ...

  8. 点击链接跳转到新页面并显示对应的tab标签页切换

    原理:从页面A跳转到页面B,则在A页面中跳转页面时传值,然后在B页面中写js获取该值并做对应的操作 附:tab标签页的制作链接:https://mp.csdn.net/postedit/1010531 ...

  9. Chrome浏览器新标签页设置首页主页修改添加网站Infinity插件好用

    Infinity new tab 是一款美观实用的chrome 新标签页.最常访问的网站添加,修改,删除网址都有,每日一图,云备份等功能都具备.是一款基于html5的Chrome扩展程序,它重新定义了 ...

最新文章

  1. [JS][dp]题解 | #打家劫舍(一)#
  2. [Buzz.Today]2011.05.25
  3. C++_STL——list(and forward_list)
  4. PHP 使用 Memcached
  5. 错误三次无法输入c语言,不懂就问,为啥错误输入三次不停止呢
  6. 九背包上的发言稿_01背包
  7. 如何将python项目部署到服务器_部署python项目到linux服务器
  8. SGA_TARGET
  9. Sql Server中实现Mysql中的group_concat函数效果
  10. 统计指定目录下的视频时长
  11. mybaitis List入参
  12. Linux命令对应的英文及整体学习法
  13. Dapper Object must implement IConvertible.
  14. word表格复制到excel回车换行问题 1
  15. git 中使用git add . 命令时候报如下警warning: LF will be replaced by CRLF in …….
  16. 指纹识别综述(1): 导论
  17. 涂鸦模组开发(压力传感器HX711)——2. 压力传感器HX711
  18. 去VB程序NAG窗口方法-4C法
  19. Arp欺骗攻击的另类应用之屌丝泡妞记
  20. 一级域名怎么申请二级域名

热门文章

  1. 华为手机怎么录屏?分享2个好用的手机录屏方法!
  2. gparted使用 ubuntu_使用GParted调整ubuntu根目录空间大小
  3. C语言编程>第一周 ⑥ 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
  4. 产品经理和程序员之间的硝烟
  5. KOB1与KOB2的区别
  6. 项目管理者如何给下属分配任务?
  7. c语言计算字符串最后一个单词长度,2020-05-28华为机考题--字符串最后一个单词的长度(C语言实现)...
  8. 国管住房公积金业务可网上办理
  9. 国信证券OA系统及质量保障体系信创建设:泰山服务器、麒麟操作系统、东方通中间件、达梦数据库、蓝凌软件、毕昇JDK
  10. 字符串里面的html转义字符串,HTML转义字符串