QT自定义Tab标签页,可以删除、添加、修改和选中
先看效果:
部分源码
#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标签页,可以删除、添加、修改和选中相关推荐
- vue中tab标签页keep-alive二级路由+删除指定缓存页面
1.实现效果 2.keep-alive 2.1是什么: keep-alive 是 Vue 的内置组件,keep-alive 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们.和 transiti ...
- JavaScript面向对象—— 动态创建tab标签页
昨天呢,介绍了js中类的概念,以及使用类创建对象的过程.今天就用js中的类实现一个小的功能,动态添加.删除标签页.emmmmm,也有点像tab栏切换,不过比tab栏切换多了添加和删除的功能. 案例说明 ...
- vue实现多个tab标签页的切换与关闭
1.实现效果 2.实现原理 vuex,实现对当前激活项,当前tab列表,当前tab的translateX,当前缓存页,当前路由的状态管理. 将vuex中的数据保存到sessionStorage中,避免 ...
- php表格js特效,JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
本文实例讲述了JavaScript表格隔行变色和Tab标签页特效.分享给大家供大家参考,具体如下: 最近一直在看JavaScript知识,偶尔也穿插一点Jquery,感觉Jquery用起来真爽,减少了 ...
- html tab与jQuery,js与jquery分别实现tab标签页功能的方法
本文实例讲述了js与jquery分别实现tab标签页功能的方法.分享给大家供大家参考,具体如下: 首先列出样式和html标签 *{margin: 0;padding: 0;} #myul li {li ...
- Vant Tab标签页+下拉刷新+上拉加载
Vant Tab标签页+下拉刷新+上拉加载 <template><div class="invoicePickupBox"><div class=&q ...
- 微信小程序|Tab标签页
欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章. 欢迎加入团队圈子!与作者面对面!直接点击! 问题描述 在使用小 ...
- 点击链接跳转到新页面并显示对应的tab标签页切换
原理:从页面A跳转到页面B,则在A页面中跳转页面时传值,然后在B页面中写js获取该值并做对应的操作 附:tab标签页的制作链接:https://mp.csdn.net/postedit/1010531 ...
- Chrome浏览器新标签页设置首页主页修改添加网站Infinity插件好用
Infinity new tab 是一款美观实用的chrome 新标签页.最常访问的网站添加,修改,删除网址都有,每日一图,云备份等功能都具备.是一款基于html5的Chrome扩展程序,它重新定义了 ...
最新文章
- [JS][dp]题解 | #打家劫舍(一)#
- [Buzz.Today]2011.05.25
- C++_STL——list(and forward_list)
- PHP 使用 Memcached
- 错误三次无法输入c语言,不懂就问,为啥错误输入三次不停止呢
- 九背包上的发言稿_01背包
- 如何将python项目部署到服务器_部署python项目到linux服务器
- SGA_TARGET
- Sql Server中实现Mysql中的group_concat函数效果
- 统计指定目录下的视频时长
- mybaitis List入参
- Linux命令对应的英文及整体学习法
- Dapper Object must implement IConvertible.
- word表格复制到excel回车换行问题 1
- git 中使用git add . 命令时候报如下警warning: LF will be replaced by CRLF in …….
- 指纹识别综述(1): 导论
- 涂鸦模组开发(压力传感器HX711)——2. 压力传感器HX711
- 去VB程序NAG窗口方法-4C法
- Arp欺骗攻击的另类应用之屌丝泡妞记
- 一级域名怎么申请二级域名
热门文章
- 华为手机怎么录屏?分享2个好用的手机录屏方法!
- gparted使用 ubuntu_使用GParted调整ubuntu根目录空间大小
- C语言编程>第一周 ⑥ 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
- 产品经理和程序员之间的硝烟
- KOB1与KOB2的区别
- 项目管理者如何给下属分配任务?
- c语言计算字符串最后一个单词长度,2020-05-28华为机考题--字符串最后一个单词的长度(C语言实现)...
- 国管住房公积金业务可网上办理
- 国信证券OA系统及质量保障体系信创建设:泰山服务器、麒麟操作系统、东方通中间件、达梦数据库、蓝凌软件、毕昇JDK
- 字符串里面的html转义字符串,HTML转义字符串