нажатие мыши на событие и qtabwidget - PullRequest
0 голосов
/ 20 апреля 2011

нужно, чтобы, когда мышь (с нажатой кнопкой) находилась сверху вкладки, она активировалась Как это возможно.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2017

Просто создайте свой собственный EventFilter.

// TabBarEventHandler
class TabBarEventHandler : public QObject
{
public:
    explicit TabBarEventHandler( QTabWidget * tabWidget );
    virtual ~TabBarEventHandler();

    void Initialize();

protected:
    QTabWidget  * mTabWidget;

    virtual bool eventFilter( QObject* obj, QEvent* event ) override;
};


// TabBarEventHandler
TabBarEventHandler::TabBarEventHandler( TabBar * tabWidget ) 
    : mTabWidget( tabWidget )
{
}

TabBarEventHandler::~TabBarEventHandler()
{
    mTabWidget->tabBar()->removeEventFilter( this );
}

void TabBarEventHandler::Initialize()
{
    mTabWidget->tabBar()->installEventFilter( this );
}

bool TabBarEventHandler::eventFilter(QObject* obj, QEvent* event)
{
    qDebug() << event->type();

    return QObject::eventFilter( obj, event );
}

void TabBarEventHandler::timerEvent(QTimerEvent* event)
{
}

А в вашем виджете:

MyTabWidget::MyTabWidget( QWidget * parent ) : QTabWidget( parent )
{
    mEventHandler = new TabBarEventHandler( this );
    mEventHandler->Initialize();
}

MyTabWidget::~MyTabWidget()
{
    delete mEventHandler;
}

Вывод отладки:

QEvent :: Type (HoverMove) QEvent :: Type (HoverMove) QEvent :: Type (MouseButtonPress) QEvent :: Type (InputMethodQuery) QEvent :: Type (InputMethodQuery) QEvent :: Type (InputMethodQuery) QEvent :: Type (Paint) QEvent :: Type (Paint) QEvent :: Type (MouseButtonRelease) QEvent :: Type (HoverMove) QEvent :: Type (HoverMove) QEvent :: Type (Leave)

0 голосов
/ 20 апреля 2011

Вы можете перехватить событие mouseMoveEvent из QTabBar.

Редактировать: Как сделать

Чтобы перехватить это, Qt предлагает вам отличные функциональные возможности. Вы можете установить фильтр событий на созданный вами виджет, чтобы он мог получать отфильтрованные события своих дочерних виджетов. См. Документацию о функции installEventFilter .

...