在QT4中处理windows消息

2024-01-28 19:58
文章标签 windows 处理 消息 qt4

本文主要是介绍在QT4中处理windows消息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

QT4,IDE为QTCreator


为了能处理某些qt无法处理的事件,或者在Qt将消息封装之前能做某些操作等等,我们可以自己处理windows事件。

处理windows事件是重写QApplication::winEventFilter(MSG*,long)函数来实现的。假如我们想捕获所有在窗体上的鼠标中键按下的消息,我们可以继承一下QApplication类:

class MyApplication:public QApplication
{Q_OBJECTpublic:MyApplication(int argc,char *argv[]);~MyApplication(){}
protected:bool winEventFilter(MSG *message, long *result);
signals:void MBD();
};


在上面的子类MyApplication中,我们重写了winEventFilter函数,并且自定义了一个信号。

然后我们将此函数补充完全:

MyApplication::MyApplication(int argc, char *argv[]):QApplication(argc,argv)
{
}
bool MyApplication::winEventFilter(MSG *message, long *result)
{switch(message->message){case WM_MBUTTONDOWN:qDebug()<<"OK";emit MBD();default:break;}return QApplication::winEventFilter(message,result);
}


在这个函数中,我们将windows消息中的WM_MBUTTONDOWN消息自定义的处理了,为了不影响默认处理,我们在最后一句中将消息和消息附加信息交给了基类的函数来处理。当你想过滤某种信息时候,可以在case语句中直接返回true,当返回false时候也会进行qt默认的处理。

然后我们就可以将信号与槽连接起来了:

connect(QApplication::instance(),SIGNAL(MBD()),this,SLOT(sayMidBtm()));


QApplication::instance()会返回一个QApplication的实例的指针,用此来与你想要运行的槽函数相连。

效果如下:

 

这样就处理完windows消息了。

这篇关于在QT4中处理windows消息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/654643

相关文章

基于Redis自动过期的流处理暂停机制

《基于Redis自动过期的流处理暂停机制》基于Redis自动过期的流处理暂停机制是一种高效、可靠且易于实现的解决方案,防止延时过大的数据影响实时处理自动恢复处理,以避免积压的数据影响实时性,下面就来详... 目录核心思路代码实现1. 初始化Redis连接和键前缀2. 接收数据时检查暂停状态3. 检测到延时过

Java利用@SneakyThrows注解提升异常处理效率详解

《Java利用@SneakyThrows注解提升异常处理效率详解》这篇文章将深度剖析@SneakyThrows的原理,用法,适用场景以及隐藏的陷阱,看看它如何让Java异常处理效率飙升50%,感兴趣的... 目录前言一、检查型异常的“诅咒”:为什么Java开发者讨厌它1.1 检查型异常的痛点1.2 为什么说

Python利用PySpark和Kafka实现流处理引擎构建指南

《Python利用PySpark和Kafka实现流处理引擎构建指南》本文将深入解剖基于Python的实时处理黄金组合:Kafka(分布式消息队列)与PySpark(分布式计算引擎)的化学反应,并构建一... 目录引言:数据洪流时代的生存法则第一章 Kafka:数据世界的中央神经系统消息引擎核心设计哲学高吞吐

聊聊springboot中如何自定义消息转换器

《聊聊springboot中如何自定义消息转换器》SpringBoot通过HttpMessageConverter处理HTTP数据转换,支持多种媒体类型,接下来通过本文给大家介绍springboot中... 目录核心接口springboot默认提供的转换器如何自定义消息转换器Spring Boot 中的消息

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Java异常捕获及处理方式详解

《Java异常捕获及处理方式详解》异常处理是Java编程中非常重要的一部分,它允许我们在程序运行时捕获并处理错误或不预期的行为,而不是让程序直接崩溃,本文将介绍Java中如何捕获异常,以及常用的异常处... 目录前言什么是异常?Java异常的基本语法解释:1. 捕获异常并处理示例1:捕获并处理单个异常解释:

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

MySQL中处理数据的并发一致性的实现示例

《MySQL中处理数据的并发一致性的实现示例》在MySQL中处理数据的并发一致性是确保多个用户或应用程序同时访问和修改数据库时,不会导致数据冲突、数据丢失或数据不一致,MySQL通过事务和锁机制来管理... 目录一、事务(Transactions)1. 事务控制语句二、锁(Locks)1. 锁类型2. 锁粒

Python调用LibreOffice处理自动化文档的完整指南

《Python调用LibreOffice处理自动化文档的完整指南》在数字化转型的浪潮中,文档处理自动化已成为提升效率的关键,LibreOffice作为开源办公软件的佼佼者,其命令行功能结合Python... 目录引言一、环境搭建:三步构建自动化基石1. 安装LibreOffice与python2. 验证安装

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的