重载了QTabWidget(由于tabBar()是protected),这样就可以获取到标签了。

1 class Tab : public QTabWidget
2 {
3 Q_OBJECT
4 public:
5 Tab(QWidget *parent = 0);
6 QTabBar* GetBar();
7 protected:
8 void mousePressEvent(QMouseEvent *event);
9 };

然后在实现一个事件过滤器,首先判断事件是双击事件,然后判断是否为标签位置,如果是则删除当前标签页,由于双击事件中必触发单击,即标签页选中事件,因此无需考虑双击其他标签页引起的index变更问题。

 1 #ifndef MYEVENTFILTER_H
2 #define MYEVENTFILTER_H
3 #include <QMainWindow>
4 #include <QMouseEvent>
5 #include "tab.h"
6
7 extern int tabindex_current;
8 extern int tabindex_old;
9 extern Tab *tabWidget;
10 extern QPoint tableft;
11 extern int tabwidth;
12 extern int tabheight;
13
14 //实现双击关闭Tab标签
15 class myEventFilter: public QObject
16 {
17 public:
18 myEventFilter():QObject()
19 {};
20 ~myEventFilter(){};
21
22 bool eventFilter(QObject* object,QEvent* event)
23 {
24 if (event->type()==QEvent::MouseButtonDblClick)
25 {
26 QMouseEvent *e = static_cast<QMouseEvent*>(event);
27 QPoint pos = e->pos();
28 int x1 = tableft.x();
29 int x2 = tableft.x()+tabwidth;
30 int y1 = tableft.y();
31 int y2 = tableft.y()+tabheight;
32 if (pos.x() >= x1 && pos.y() >= y1 && pos.x() <= x2 && pos.y() <= y2)
33 tabWidget->removeTab(tabindex_current);
34 }
35 return QObject::eventFilter(object,event);
36 };
37 };
38
39 #endif // MYEVENTFILTER_H

最后绑定到主函数main中,这样就可捕捉到所有的事件了:

1 qApp->installEventFilter(new myEventFilter());

另外,需在标签页切换时更新宽度信息(高度无需更新):

1 void MainWindow::updateBar()
2 {
3 tabindex_current = tabWidget->currentIndex();
4 tabindex_old = tabindex_current;
5 QTabBar *bar = tabWidget->GetBar();
6 if (bar->size().width() > 0)
7 tabwidth = bar->size().width();
8 }

QTabWidget标签实现双击关闭(转)的更多相关文章

  1. QTabWidget 中 关于Tab 关闭和添加的基本教程!

    QTabWidget是PyQt5 中使用较为广泛的容器之一,经常会在日常使用的软件中用到它:QTabwidget是由几个标签组成,每个标签可以当作一个界面,下面就是应用Qtabwidget的一个简单例 ...

  2. C# Winform TabControl 双击关闭TabPage

    在使用TabControl控件时,需要考虑自动创建的TabPage页实现——关闭功能 思路一:自定义TabControl控件,添加关闭按钮 思路二:TabControl控件TabPage显示ToolT ...

  3. 左键双击关闭pagecontrol中的一个分页即一个tabsheet,功能像遨游浏览器一样

    左键双击关闭pagecontrol中的一个分页即一个tabsheet,功能像遨游浏览器一样 procedure TfrmServerSetup.PageControl1MouseDown(Sender ...

  4. pyqt 设置QTabWidget标签页不可选

    pyqt 设置QTabWidget标签页不可选 for i in range(1,7): self.tabWidget.setTabEnabled(i,False)i-对应标签页的位数

  5. selenium 对浏览器标签页进行关闭和切换

    关闭标签页 # 1.关闭浏览器全部标签页 driver.quit() # 2.关闭当前标签页(从标签页A打开新的标签页B,关闭标签页A) driver.close() 切换标签页 from selen ...

  6. python selenium 对浏览器标签页进行关闭和切换

    1.关闭浏览器全部标签页 driver.quit() 2.关闭当前标签页(从标签页A打开新的标签页B,关闭标签页A) driver.close() 3.关闭当前标签页(从标签页A打开新的标签页B,关闭 ...

  7. QMainWindow + QtabWidget 实现 菜单栏 和 标签

    from PyQt5.QtWidgets import ( QMainWindow, QMenu, QAction, QTabWidget) if __name__ == '__main__': im ...

  8. 使用jQuery开发tab选项卡插件(可以右键关闭多个标签)

    在前一篇“使用jQuery开发tab选项卡插件”的基础上添加了tab标签右键关闭菜单功能,菜单主要包括:关闭当前标签.关闭左侧标签.关闭右侧标签.关闭其他.关闭全部. 一.插件效果 二.实现思路 为w ...

  9. Source Insight 3.X 标签插件v1.0发布

    Source Insight可以说是一款程序员必备的开发/阅读源码工具,美中不足的是SI没有标签栏,多个源码之间切换很不方便,于是我就乘闲暇之余写了该作品sihook:标签插件;不过严格意义上来说si ...

随机推荐

  1. Angular 中的 dom 操作(ViewChild)以及父子组件中通过 ViewChild 调用子组件的方法

    <app-header #header></app-header> <div #myBox> 我是一个dom节点 </div> <button ( ...

  2. 009-Linux nohup

    一.基础概述 1./dev/null 可以将/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然 ...

  3. Carve ifc failed

    Detected IFC version: IFC2X3 Warning: Sweeper::createTriangulated3DFace, carve::triangulate::incorpo ...

  4. 开启windows ping端口功能

    1.打开控制面板,选择程序 2.选择打开和关闭windows功能 3.将Tenet客户端选项勾上 4.运行栏中输入cmd,进入到命令窗口 5.输入命令   ping    ip地址     端口号  ...

  5. SpringMVC拦截器工作流程图

  6. Django之model详解

    Django中的页面管理后台 Djano中自带admin后台管理模块,可以通过web页面去管理,有点想php-admin,使用步骤: 在项目中models.py 中创建数据库表 class useri ...

  7. MySQL安装时出现Apply Security Settings错误的解决办法(转)

    最近在学习MySQL时,下载了MySQL5.5版本的安装包,在配置向导的最后的页面却出现了Apply Security Settings的错误.第一次安装时比较顺利,中途卸载了一下,结果第二次安装的时 ...

  8. (二)Centos之在VM虚拟机中安装Centos操作系统

    一.下载 阿里云镜像 https://mirrors.aliyun.com/centos/7/isos/x86_64/ 下载那个 DVD版本即可. 二.安装 在安装操作系统之前 我们来给这个“机器”搞 ...

  9. 第十二章 与Spring集成——《跟我学Shiro》

    转发:https://www.iteye.com/blog/jinnianshilongnian-2029717 目录贴:跟我学Shiro目录贴 Shiro的组件都是JavaBean/POJO式的组件 ...

  10. Entitas--ECS框架插件

    ECS Entity.Component.System Entity Component System 模块解耦 守望先锋 https://gameinstitute.qq.com/community ...