【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;
}
相关推荐
Felix_One1 天前
Qt 串口通信避坑指南:QSerialPort 的 5 个常见问题
qt
blasit4 天前
笔记:Qt C++建立子线程做一个socket TCP常连接通信
c++·qt·tcp/ip
西岸行者9 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意9 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码9 天前
嵌入式学习路线
学习
毛小茛9 天前
计算机系统概论——校验码
学习
babe小鑫9 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
范特西.i9 天前
QT聊天项目(8)
开发语言·qt
winfreedoms9 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下9 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs