[toc]
事件过滤器
1
| void QObject::installEventFilter(QObject *filterObj)
|
1
| bool eventFilter(QObject *obj, QEvent *event);
|
Qt的事件过滤由以上两个方法实现,首先安装一个事件过滤器,然后重写 bool eventFilter(QObject *obj, QEvent *event)
。
filterObj
表示事件筛选器对象,它接收发送到此QObject
对象的所有事件。筛选器可以停止事件,也可以将事件转发给此QObject
对象。事件过滤器filterObj
通过它的eventFilter()
函数接收事件。
简单实现
当鼠标进入 lineEdit
的时候并且操作时 HoverEnter
的时候,则修改 QLabel
的颜色。
- 安装事件过滤器
1
| ui->lineEdit->installEventFilter(this);
|
- 重写
eventFilter()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| 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); }
|