最近项目中遇到一个问题,需要禁用滚轮切换QTabWidget的Tab标签,QTabWidget本身没有接口设置启禁用滚轮;于是想到用事件过滤来处理,使用QTabWidget->installEventFilter(this),嗯,这个办法应该可行,但现实总不如人愿,意外的无效;eventfilter函数如下:
clientWindow::eventFilter(QObject *watched, QEvent *event)
{
if(watched == this->m_ptabwMain)
{
if(event->type() == QEvent::Wheel)
{
event->accept();
return true;
}
return QWidget::eventFilter(watched,event);
}
return false;
}
后来考虑到QTabWidget属于组合控件,滚轮切换事件应该是由tabBar发出的,所以理应过滤tabBar的事件;于是修改代码如下:
this->m_ptabwMain->tabBar()->installEventFilter(this);
clientWindow::eventFilter(QObject *watched, QEvent *event)
{
if(watched == this->m_ptabwMain->tabBar())
{
if(event->type() == QEvent::Wheel)
{
return true;
}
return QWidget::eventFilter(watched,event);
}
return false;
}
这样就可以成功禁用滚轮切换QTabWidget标签了;