环境:Qt5.9.6 + VS2015
本文以QToolButton为例。
1. 头文件里声明事件过滤函数:
bool eventFilter(QObject *watched, QEvent *event);
2. 构造函数中给控件安装事件过滤器:
_addNewTabBtn.installEventFilter(this);
3. 实现eventFilter函数:
bool Widget::eventFilter(QObject *watched, QEvent *event)
{
if (dynamic_cast<QToolButton*>(watched) == &_addNewTabBtn && event->type() == QEvent::Enter)
QToolTip::showText(dynamic_cast<QEnterEvent*>(event)->globalPos(), toolTip(), this);
return QWidget::eventFilter(watched, event);
}