• 6851阅读
  • 5回复

[提问]QTabWidget 如何知道用户双击tab? [复制链接]

上一主题 下一主题
离线firstcong
 

只看楼主 倒序阅读 楼主  发表于: 2011-11-20
我想在双击tab的时候,将该tab自动弹出,该怎么做呢?
菜鸟也有翱翔的一天~~~
离线wchflchy
只看该作者 1楼 发表于: 2012-11-26
哥们,你的问题解决了没?我和你遇到同样的问题,不过,我是要知道Tab页上的拖拽事件。如果你有解决方案的话,麻烦加QQ849812908详聊。谢谢。
QT新手上路
离线schindleren

只看该作者 2楼 发表于: 2013-02-21
用QMdiSubWindow类。
离线pxiao_xiao

只看该作者 3楼 发表于: 2013-02-21
派生自己的tabWidget  调用QTabWidget 的protected函数QTabBar * QTabWidget::tabBar ();重写QTabBar的press事件;实现双击
离线pxiao_xiao

只看该作者 4楼 发表于: 2013-02-21
QTabBar 自己 也派生一个自己的
离线pxiao_xiao

只看该作者 5楼 发表于: 2013-02-25
#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);
}
快速回复
限100 字节
 
上一个 下一个