Qt 事件过滤器简单案例

导读:本篇文章讲解 Qt 事件过滤器简单案例,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

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

在这里插入图片描述

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

在这里插入图片描述

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

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

添加头文件
在这里插入图片描述

#include <QKeyEvent>
#include <QWheelEvent>

安装过滤器:
在这里插入图片描述

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、运行项目

鼠标左键点击图片
在这里插入图片描述
鼠标右键点击图片
在这里插入图片描述
鼠标在textEdit上滑动滚轮,改变了字体大小
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74936.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!