当前位置: 首页 > news >正文

Qt: 事件过滤器的更多用法

不懂事件循环怎么回事的可以看下面的文章
Qt事件循环完整流程

常规使用

定义一个窗口MainWindow ,之后在窗口里添加一个事件过滤函数eventFilter,将窗口的某一个或一些字控件安装上事件过滤器。
这种情况下MainWindow 就是pushButton11的时间过滤器,所有将要传递到pushButton11的事件都是先进入过滤器MainWindow 的eventFilter函数。
mainwindow.h

#include <QMainWindow>
class MainWindow : public QMainWindow
{Q_OBJECT
protected:bool eventFilter(QObject*obj, QEvent*event)override;
};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include<QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{QPushButton pushButton11(this);pushButton11->installEventFilter(this);
}bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{if(obj->objectName() == QString("pushButton11")&& event->type() == QEvent::MouseButtonPress){qDebug("MainWindow eventFilter");}QMainWindow::eventFilter(obj, event);
}

此时点击打印的信息就是
MainWindow eventFilter

独立定义过滤器

过滤器其实没有特别要求一定要是UI界面或者父窗口之类的,只要是QObject对象即可,我们可以定义单独定义一个过滤器类QObjectFilter来过滤所有窗口中所有向过滤的对象的事件。这样做如果每一个小部件都安装上这个过滤器,那么这个过滤器其实就类似于QApplication::notify()函数了。
下面是一个简单示例:
在上面两个文件之外又定义一个类QObjectFilter
qobjectfilter.h

#include <QObject>
class QObjectFilter:public QObject
{Q_OBJECT
public:QObjectFilter();
protected:bool eventFilter(QObject*obj, QEvent*event)override;
};

qobjectfilter.cpp

#include "qobjectfilter.h"
#include <qevent.h>
QObjectFilter::QObjectFilter(){}bool QObjectFilter::eventFilter(QObject *obj, QEvent *e)
{if(obj->objectName() == QString("pushButton11") && e->type() == QEvent::MouseButtonPress ){qDebug("filter eventFilter");}QObject::eventFilter(obj, e);
}

不同的是,mainwindow.cpp中将按钮的过滤去换成了QObjectFilter类对象 filter,这样pushButton11所有的事件都会走QObjectFilter::eventFilter函数

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{QPushButton pushButton11(this);pushButton11->installEventFilter(&filter);
}

此时点击打印的信息就是
filter eventFilter

多重过滤器

一个空间其实可以安装多个过滤器,所有过滤器的eventFilter都可以执行(前提是不要被中断传递),执行顺序是最后安装的最新执行,例如:

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{QPushButton pushButton11(this);pushButton11->installEventFilter(&filter);ui->pushButton11->installEventFilter(this);
}

此时点击打印的信息就是
MainWindow eventFilter
filter eventFilter

相关文章:

Qt: 事件过滤器的更多用法

不懂事件循环怎么回事的可以看下面的文章 Qt事件循环完整流程 常规使用 定义一个窗口MainWindow &#xff0c;之后在窗口里添加一个事件过滤函数eventFilter&#xff0c;将窗口的某一个或一些字控件安装上事件过滤器。 这种情况下MainWindow 就是pushButton11的时间过滤器&am…...

解决:ModuleNotFoundError: No module named ‘paddle‘

错误显示&#xff1a; 原因&#xff1a; 环境中没有‘paddle’的python模块&#xff0c;但是您在尝试导入 解决方法&#xff1a; 1.普通方式安装&#xff1a; pip install paddlepaddle #安装命令 2.镜像源安装 pip install paddlepaddle -i https://pypi.tuna.tsinghua.e…...

上海雷卯可以解决YPbPr/ YCbCr接口 ESD/EOS静电浪涌问题

YPbPr /YCbCr 接口传输的是视频信号&#xff0c;不传输音频信号。YPbPr 和 YCbCr 都是视频信号的颜色编码格式&#xff0c;多应用于机顶盒&#xff08;Set-top box&#xff09;,TV电视&#xff0c;投影仪&#xff0c;游戏机和DVD播放器。 YPbPr&#xff1a;是一种模拟视频接口…...

【FPGA/IC】CRC电路的Verilog实现

前言 在通信过程中由于存在各种各样的干扰因素&#xff0c;可能会导致发送的信息与接收的信息不一致&#xff0c;比如发送数据为 1010_1010&#xff0c;传输过程中由于某些干扰&#xff0c;导致接收方接收的数据却成了0110_1010。为了保证数据传输的正确性&#xff0c;工程师们…...

go语言添加代理

LiteIDE 工具->管理 https://mirrors.aliyun.com/goproxy/或https://goproxy.cn,direct 命令行 go env -w GOPROXYhttps://goproxy.cn,direct...

kafka 可视化工具

kafka可视化工具 随着科技发展&#xff0c;中间件也百花齐放。平时我们用的redis&#xff0c;我就会通过redisInsight-v2 来查询数据&#xff0c;mysql就会使用goland-ide插件来查询&#xff0c;都挺方便。但是kafka可视化工具就找了半天&#xff0c;最后还是觉得redpandadata…...

安康杯安全知识竞赛上的讲话稿

各位领导、同志们&#xff1a; 经过近半个月时间的准备&#xff0c;南五十家子镇平泉首届安康杯安全生产知识竞赛初赛在今天圆满落下帏幕&#xff0c;经过紧张激烈的角逐&#xff0c; 代表队、 代表队和 代表队分别获得本次竞赛的第一、二、三名让我们以热烈的掌声表示祝…...

python 基础知识点(蓝桥杯python科目个人复习计划59)

今日复习内容&#xff1a;做题 例题1&#xff1a;建造房屋 问题描述&#xff1a; 小蓝和小桥是两位年轻的建筑师&#xff0c;他们正在设计一座新的城市。 在这个城市中&#xff0c;有N条街道&#xff0c;每条街道上有M个位置可以建造房屋&#xff08;一个位置只能建造一个房…...

LCR 179. 查找总价格为目标值的两个商品 - 力扣

1. 题目 购物车内的商品价格按照升序记录于数组 price。请在购物车中找到两个商品的价格总和刚好是 target。若存在多种情况&#xff0c;返回任一结果即可。 2. 示例 3. 分析 题目有说明为递增数组&#xff0c;所以可以利用单调性双指针解决。跟611. 有效的三角形个数为一类题…...

《汇编语言》- 读书笔记 - 第16章-直接定址表

《汇编语言》- 读书笔记 - 第16章-直接定址表 16.1 描述了单元长度的标号&#xff08;数据标号&#xff09;检测点 16.1 16.2 在其他段中使用数据标号assume通过标号取地址检测点 16.2 16.3 直接定址表&#xff08;Direct Addressing Table&#xff09;例1分析代码效果 例2分析…...

ChatGPT 新增朗读功能,支持 37 种语言

3 月 5 日消息&#xff0c;OpenAI 为其广受欢迎的聊天机器人 ChatGPT 推出了名为「朗读」(Read Aloud) 的新功能。该功能可以让 ChatGPT 用五种不同的声音朗读其回复&#xff0c;旨在为用户提供更加便捷的交互体验。目前&#xff0c;「朗读」功能已上线 ChatGPT 的网页端、iOS …...

洛谷 P8816 [CSP-J 2022] 上升点列(T4)

目录 题目传送门 算法解析 最终代码 提交结果 尾声 题目传送门 [CSP-J 2022] 上升点列 - 洛谷https://www.luogu.com.cn/problem/P8816 算法解析 k 0 且 xi, yi 值域不大时&#xff0c;这题是非常简单的 DP&#xff0c;类似「数字三角形」。 记 dp(x,y) 为「以 (x,y) …...

python爬虫(2)

继上节 查看数组维数 可以使用数组的ndim属性 代码示例如下&#xff1a; import numpy as np c np.random.randint(1,9,5) print(c.ndim) 结果如下&#xff1a; 当然这些也可以结合前面的各种用法来使用 1、选取数组元素 &#xff08;1&#xff09;一维数组的元素…...

外包干了8天,技术退步明显。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入杭州某软件公司&#xff0c;干了接近3年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…...

浅谈去耦电容的作用、选择、布局及其它电容的区别!

在一些文章资料中&#xff0c;去耦电容器被认为是旁路电容器。在其他资料中&#xff0c;去耦电容和旁路电容的区别在于&#xff1a;“旁路电容以输入信号中的干扰为滤波对象&#xff0c;而去耦电容以输出信号的干扰为滤波对象&#xff0c;防止干扰信号返回到输出端。”力量。”…...

抖音视频评论批量采集软件|视频下载工具

《轻松搞定&#xff01;视频评论批量采集软件&#xff0c;助您高效工作》 在短视频这个充满活力和创意的平台上&#xff0c;了解用户评论是了解市场和观众心声的重要途径之一。为了帮助您快速获取大量视频评论数据&#xff0c;我们推出了一款操作便捷、功能强大的软件&#xff…...

javaSE-----继承和多态

目录 一.初识继承&#xff1a; 1.1什么是继承&#xff0c;为什么需要继承&#xff1a; 1.2继承的概念与语法&#xff1a; 二.成员的访问&#xff1a; 2.1super关键字 2.2this和super的区别&#xff1a; 三.再谈初始化: 小结&#xff1a; 四.初识多态&#xff1a; 4.1多…...

数据库之Oracle数据导入导出

目录 一、单表导出和导入1、单表导出数据2、单表导入数据二、全表导出和导入1、远程导出全表数据2、导入本地数据三、密码带特殊字符的写法1、Windows OS写法2、Linux/Unix OS写法 四、总结 一、单表导出和导入 1、单表导出数据 --导出远程服务上的表数据 exp 用户名/密码IP…...

nRF52832——GPIOTE与外部中断

这里写目录标题 GPIOTE 原理分析GPIOTE 输入事件应用GPIOTE 事件寄存器应用GPIOTE 事件组件的应用&#xff08;库函数&#xff09;GPIOTE PORT 事件应用 GPIOTE 任务应用GPIOTE 任务触发 LED 寄存器操作组件方式进行任务配置 GPIOTE 原理分析 GPIO 任务和时间&#xff08;GPIO…...

根据用户名称实现单点登录

一、参数格式 二、后端实现 Controller层 public class IAccessTokenLoginController extends BaseController {Autowiredprivate ISysUserService sysUserService;Autowiredprivate ISingleTokenServiceImpl tokenService;/*** 登录方法** return 结果*/PostMapping("/l…...

【Linux从入门到精通】第10篇:软件包管理——Linux如何安装与卸载软件

目录 一、引言&#xff1a;Linux装软件的三种姿势 二、两大流派&#xff1a;APT与YUM/DNF的对比 2.1 APT核心命令&#xff08;Ubuntu/Debian&#xff09; 2.2 YUM/DNF核心命令&#xff08;CentOS/RHEL&#xff09; 2.3 命令速查表 三、换源加速&#xff1a;国内镜像源配置…...

拆解TMM审稿流程:从Major Revision到Accept,如何高效撰写20页回复信?

学术论文大修回复信撰写全攻略&#xff1a;从意见归类到最终录用 当屏幕上跳出"Major Revision"的邮件通知时&#xff0c;那种既兴奋又忐忑的心情每位研究者都深有体会。兴奋的是论文没有被直接拒稿&#xff0c;忐忑的是面对四位审稿人密密麻麻的修改意见不知从何下手…...

python游戏开发和设计学习总结

在本次 Python 课程中&#xff0c;我们主要学习了弹球游戏和飞机大战两款小游戏的开发与设计&#xff0c;借助 pygame 库完成代码编写、功能设计与调试&#xff0c;从基础小游戏入手&#xff0c;逐步了解 2D 游戏的开发流程&#xff0c;收获了很多编程与游戏设计的知识。 一、…...

如何用个人AI数据训练守护你的数字记忆:WeChatMsg数据主权完整指南

如何用个人AI数据训练守护你的数字记忆&#xff1a;WeChatMsg数据主权完整指南 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trend…...

保姆级教程:用ADB给海信电视LED55N3000U做‘瘦身手术’,安全卸载预装软件

海信电视LED55N3000U系统优化实战&#xff1a;ADB安全卸载预装应用指南 当智能电视用久了&#xff0c;系统卡顿、存储空间不足的问题总会不期而至。特别是像海信LED55N3000U这样的机型&#xff0c;VIDAA系统预装的各种应用不仅占用宝贵存储&#xff0c;还可能后台运行消耗资源。…...

深度解析:如何高效实现Navicat Premium无限试用重置的完整实战指南

深度解析&#xff1a;如何高效实现Navicat Premium无限试用重置的完整实战指南 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac …...

CANopen设备现场配置避坑指南:LSS协议详解与节点ID/波特率设置全流程

CANopen设备现场配置避坑指南&#xff1a;LSS协议详解与节点ID/波特率设置全流程 当你面对一批出厂节点ID相同或未知的CANopen从站设备时&#xff0c;如何高效、安全地完成节点ID和网络波特率的配置&#xff1f;这可能是每个现场工程师都曾头疼的问题。本文将深入解析LSS&#…...

告别ViT的‘算力焦虑’:手把手带你用Swin Transformer搞定图像分类(附PyTorch实战代码)

突破视觉Transformer算力瓶颈&#xff1a;Swin Transformer实战图像分类指南 在计算机视觉领域&#xff0c;Transformer架构正掀起一场革命。但当我们兴奋地将Vision Transformer&#xff08;ViT&#xff09;应用到实际项目中时&#xff0c;往往会遇到一个残酷的现实——显存爆…...

告别音乐枷锁:3分钟掌握ncmdump解锁网易云音乐NCM格式

告别音乐枷锁&#xff1a;3分钟掌握ncmdump解锁网易云音乐NCM格式 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾在网易云音乐下载了心爱的歌曲&#xff0c;却发现只能在特定设备上播放&#xff1f;那些珍贵的音乐收藏&…...

一汽研制国内首颗多域融合芯片;国产高频软磁材料实现量产;宁德时代将发布钠电凝聚态等新技术;国轩高科将推第五代全场景磷酸铁锂电池

一汽联合研制国内首颗多域融合芯片牛喀网获悉&#xff0c;据中国一汽消息&#xff0c;中国一汽联合行业伙伴成功研制国内首颗车规级先进制程多域融合芯片“红旗1号”&#xff0c;集成五大功能域&#xff0c;实现“舱、驾、控”一体化。该芯片为面向智能汽车中央计算架构的多域融…...