【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;
}
相关推荐
青衫码上行26 分钟前
【Java Web学习 | 第12篇】JavaScript(6)DOM
java·开发语言·前端·javascript·学习
YangYang9YangYan34 分钟前
中专生学历提升与职业发展指南
大数据·人工智能·学习·数据分析
深蓝海拓1 小时前
YOLO v11的学习记录(五) 使用自定义数据从头训练一个实例分割的模型
学习·yolo
Gary Studio1 小时前
鋰電池充電芯片學習
学习
菜鸟‍1 小时前
【前端学习】React学习【万字总结】
前端·学习·react.js
AA陈超2 小时前
ASC学习笔记0019:返回给定游戏属性的当前值,如果未找到该属性则返回零。
c++·笔记·学习·游戏·ue5·虚幻引擎
知南x3 小时前
【STM32MP157 异核通信框架学习篇】(10)Linux下Remoteproc相关API (下)
linux·stm32·学习
小小鱼儿飞4 小时前
QT音乐播放器18----新歌速递播放、隐藏顶部和底部工具栏、自定义ToolTips
开发语言·qt
千疑千寻~11 小时前
【Qt】QT的程序打包
开发语言·qt
莫小墨11 小时前
基于TCP/IP和UDP组播的Qt网络直播间项目
网络·qt·tcp/ip·udp