#include <QTabWidget>
class QMyTabWidget : public QTabWidget
{
Q_OBJECT
public:
QMyTabWidget(QWidget *parent);
~QMyTabWidget();
public:
void setFilter();
protected:
bool eventFilter(QObject * object , QEvent * event);
QTabBar * getTabBar();
private:
};
--------------------------------------------------------------------------------------------
#include "QMyTabWidget.h"
#include <QEvent>
#include <QTabBar>
QMyTabWidget::QMyTabWidget(QWidget *parent)
: QTabWidget(parent)
{
}
QMyTabWidget::~QMyTabWidget()
{
}
QTabBar * QMyTabWidget::getTabBar()
{
return tabBar();
}
void QMyTabWidget::setFilter()
{
getTabBar()->installEventFilter(this);
this->installEventFilter(this);
}
bool QMyTabWidget::eventFilter(QObject * object , QEvent * event)
{
if (object == getTabBar() || object == this)
{
if (QEvent::MouseButtonDblClick == event->type())
{
//被双击的tab页一定是当前的tab页
QWidget * widget = NULL;
int tabIndex = this->currentIndex();
widget = this->widget(tabIndex);
this->removeTab(tabIndex);
widget->setWindowFlags(Qt::Window/* | Qt::FramelessWindowHint*/);
widget->setVisible(true);
}
}
return QWidget::eventFilter(object , event);
}