目录

  • 1、新建一个widget,ui界面设计如下
  • 2、widget.h中添加构过滤器造函数
  • 3、在widget.cpp中添加如下代码
  • 4、运行项目


1、新建一个widget,ui界面设计如下

Qt 事件过滤器简单案例_右键

2、widget.h中添加构过滤器造函数

Qt 事件过滤器简单案例_#include_02

bool eventFilter(QObject *watched, QEvent *event);

3、在widget.cpp中添加如下代码

添加头文件

Qt 事件过滤器简单案例_#include_03

#include <QKeyEvent>
#include <QWheelEvent>

安装过滤器:

Qt 事件过滤器简单案例_右键_04

ui->textEdit->installEventFilter(this);
ui->spinBox->installEventFilter(this);
ui->label->installEventFilter(this);

添加过滤器重构函数:

bool Widget::eventFilter(QObject *watched, QEvent *event)
{
    if(watched==ui->textEdit)
    {
        if(event->type()==QEvent::Wheel)
        {
            QWheelEvent *wheelEvent = (QWheelEvent*)event;
            if(wheelEvent->delta()>0)
                ui->textEdit->zoomIn();
            else
                ui->textEdit->zoomOut();
        }
    }
    else if(watched==ui->spinBox)
    {
        if(event->type()==QEvent::KeyPress)
        {
            QKeyEvent *keyEvent = (QKeyEvent*)event;
            if(keyEvent->key()==Qt::Key_Space)
                ui->spinBox->setValue(0);
        }
    }
    else if(watched==ui->label)
    {
        if(event->type()==QEvent::MouseButtonPress)
        {
            QMouseEvent *mouseEvent = (QMouseEvent*)event;
            if(mouseEvent->button()==Qt::LeftButton)
                ui->textEdit->setText(tr("左击了图片!"));
            else if(mouseEvent->button()==Qt::RightButton)
                ui->textEdit->setText(tr("右击了图片!"));
        }
    }
    else
        return QWidget::eventFilter(watched,event);
    return false;
}

4、运行项目

鼠标左键点击图片

Qt 事件过滤器简单案例_右键_05


鼠标右键点击图片

Qt 事件过滤器简单案例_右键_06


鼠标在textEdit上滑动滚轮,改变了字体大小

Qt 事件过滤器简单案例_右键_07