Open
Description
Qt事件过滤器(eventFilter)
[toc]
事件过滤器
void QObject::installEventFilter(QObject *filterObj)
bool eventFilter(QObject *obj, QEvent *event);
Qt的事件过滤由以上两个方法实现,首先安装一个事件过滤器,然后重写 bool eventFilter(QObject *obj, QEvent *event)
。
filterObj
表示事件筛选器对象,它接收发送到此QObject
对象的所有事件。筛选器可以停止事件,也可以将事件转发给此QObject
对象。事件过滤器filterObj
通过它的eventFilter()
函数接收事件。
简单实现
> 当鼠标进入 lineEdit
的时候并且操作时 HoverEnter
的时候,则修改 QLabel
的颜色。
- 安装事件过滤器
ui->lineEdit->installEventFilter(this);
- 重写
eventFilter()
bool Widget::eventFilter(QObject *wcg, QEvent *event)
{
if (wcg == ui->lineEdit)
{
if(event->type() == QEvent::HoverEnter)
{
ui->label_2->setText(QString("进入"));
ui->label_2->setStyleSheet("QLabel{color:red;}");
qDebug() << "进入" << endl;
}
else if(event->type() == QEvent::HoverLeave)
{
ui->label_2->setText(QString("离开"));
ui->label_2->setStyleSheet("QLabel{color:green;}");
qDebug() << "离开" << endl;
}
}
return QWidget::eventFilter(wcg,event);
}
blog link [Qt事件过滤器(eventFilter)](https://holdyounger.github.io/Code/Qt/Qt 过滤器/)