【QT】事件过滤器

事件过滤器
1、给控件安装过滤器

2、重写过滤器事件bool eventFilter(两个参数);

基于上一个项目:【QT】事件分发器-CSDN博客

我的代码有问题,不能实现事件过滤器的功能,先记录下来

在头文件中要声明该函数。

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QMouseEvent>


Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 利用事件过滤器拦截鼠标按下事件
    // 1给控件安装过滤器
    ui->label->installEventFilter(this);

}



// 2重写过滤器事件
// 过滤器事件
// 参数一:判断控件
// 参数二:判断事件
bool Widget::eventFiltter(QObject* obj, QEvent* ev) {
    // 是label标签 并且 鼠标按下
    if (obj == ui->label) {
        if (ev->type() == QEvent::MouseButtonPress) {
            // 转换一下
            QMouseEvent* e = static_cast<QMouseEvent*>(ev);
            QString str = QString("在事件过滤器中鼠标按下, x = %1, y = %2").arg(e->x()).arg(e->y());
            qDebug() << str;
            // 拦截
            return true;
        }
    }
    return QWidget::eventFilter(obj, ev);
}

Widget::~Widget()
{
    delete ui;
}
相关推荐
Xzq2105093 分钟前
网络基础学习(一)
网络·学习
Fuliy969 分钟前
第三阶段:进化与群体智能 (Evolutionary & Swarm Intelligence)
人工智能·笔记·python·学习·算法
ejinxian9 分钟前
Go语言完整学习规划(2026版)- Part 1
学习·go
小陈phd12 分钟前
多模态大模型学习笔记(十六)——Transformer 学习之 Decoder Only
人工智能·笔记·深度学习·学习·自然语言处理·transformer
艾莉丝努力练剑16 分钟前
【QT】常用控件(一):初识控件,熟悉QWidget
android·linux·数据库·qt·学习·mysql·qt5
jgyzl24 分钟前
2026.3.10 Apache POI的学习及思考
学习·apache
娇娇yyyyyy25 分钟前
QT编程(5):几种常用的对话框
windows·qt·microsoft
deng-c-f29 分钟前
Linux C/C++ 学习日记(74):Kafka(二):环境的搭建及常用的指令
学习·karfka
憧憬成为web高手30 分钟前
xss学习记录--xss-lab部署
前端·学习·xss
Accerlator31 分钟前
Redis 学习
redis·学习·mybatis