首页 > 其他分享 >Qt事件系统

Qt事件系统

时间:2024-12-16 10:57:48浏览次数:5  
标签:鼠标 系统 应用程序 QObject 事件 QEvent Qt

一、Qt事件简介:
1、 事件是对应用程序内部或者外部产生的事情或者动作的通称。

2、 Qt程序是事件驱动的,Qt事件的产生和处理是程序运行的主线,存在于程序的整个生命周期。

3、 Qt事件被封装为对象,所有的Qt事件均继承自抽象类QEvent。

4、 常见的事件如下:
(1)键盘事件: QKeyEvent
(2)鼠标事件: QMouseEvent
(3)拖拽事件: QDragEnterEvent
(4)滚轮事件: QWheelEvent
(5)绘制事件:QPaintEvent
(6)定时器事件: QTimerEvent
(7)焦点事件:QFocusEvent
(8)关闭事件:QCloseEvent
(9)窗口大小位置引起的事件:QResizeEvent
(10)上下文菜单事件:QContextMenuEvent

5、 一个事件可能包含多种事件类型,这些事件类型统一由QEvent::Type枚举类型表示,通过QEvent类的type()可获得具体的事件类型。如鼠标事件QMouseEvent又分为鼠标按下、鼠标释放、鼠标移动、鼠标双击事件类型。

6、 QEvent子类只能表示事件,但不能处理事件,在Qt中,任何QObject子类实例都可以接收和处理事件。(QObject三大职责: 内存管理、事件处理、内省(intropection))

7、 可在Qt帮助文档中搜索The Event System关键字查看。

二、Qt事件的产生和发送:
1、 事件可能由应用程序外部产生,即操作系统事件; 也可能由应用程序内部产生。

2、 由应用程序外部产生:
(1)、一般用户操作,如鼠标按下、键盘按键等,操作系统(的设备驱动程序)感知,向应用程序发送系统消息。
(2)、Qt的事件循环(非GUI程序的QCoreApplication或GUI程序的QApplication的exec()),监听到事件后生成一个事件对象(QEvent子类对象),放入到事件循环队列中。
(3)、Qt(QCoreApplication或QApplication)从事件循环队列中,取出一个事件对象,通过层层传递,最终会发送给目标QObject对象(一般是获得焦点的QWidget)。
(4)、如果目标QObject对象有自定义安装的事件过滤器,可能会在自定义事件过滤器中处理掉事件;如果没有自定义事件过滤器,则事件会到达目标QObject的event(QEvent *)函数。
(5)、event(QEvent *)函数会根据事件类型(QEvent的type())调用不同的事件处理函数。
(6)、在事件处理函数中发送预定义的信号,从而调用与信号关联的槽函数。

3、 由应用程序内部产生:
(1)、应用程序自己产生事件,有两种方式。
一种是调用QCoreApplication的postEvent(QObject *receiver, QEvent *event, int priority = Qt::NormalEventPriority);
另一种是调用QCoreApplication的sendEvent(QObject *receiver, QEvent *event)。
(2)、postEvent和sendEvent区别:
a、sendEvent会使用notify()函数直接给receiver发送事件; post

标签:鼠标,系统,应用程序,QObject,事件,QEvent,Qt
From: https://blog.csdn.net/weixin_44629261/article/details/144397932

相关文章

  • 两招玩转阿里云系统事件监控
    作者:田异常(昔今)背景介绍在当今快速发展的数字化时代,IT系统和应用程序对业务运营至关重要。为了确保顺畅的性能、可靠性和安全性,IT团队依靠监控事件来实时检测、分析和响应问题。监控事件是指任何影响IT系统正常运作的事件,例如服务器崩溃、网络中断或应用程序错误。这些事件......
  • Linux系统基础(二):目录结构解析
    Linux目录结构根目录介绍/根目录/bin 放置的是在单人维护模式下还能够被操作的指令,在/bin底下的指令可以被root与一般帐号所使用/boot存放启动所需要的文件,如Linux内核和引导程序/dev存放设备文件,用于访问设备如硬盘、显示器、网络接口......
  • 66 基于单片机的太阳能充电、温度检测、档位PWM调速系统
    所有仿真详情导航:PROTEUS专栏说明-CSDN博客目录一、主要功能二、硬件资源三、主程序编程四、资源下载一、主要功能        基于52单片机,采用DS18B20温度传感器检测温度,采用滑动变阻器连接ADC0832数模转换器模拟电量,采用L298N驱动电机转动。五个按键,第一按键......
  • springboot高校心理测评系统-计算机毕业设计源码25173
    目 录第1章 引 言1.1 选题背景1.2 研究现状1.3 论文结构安排第2章 系统的需求分析2.1 系统可行性分析2.1.1 技术方面可行性分析2.1.2 经济方面可行性分析2.1.3 法律方面可行性分析2.1.4 操作方面可行性分析2.2 系统功能需求分析2.......
  • springboot留守儿童信息管理系统-计算机毕业设计源码25197
    摘要本文旨在探讨基于Java的留守儿童信息管理系统的设计与实现。随着中国农村地区外出务工人员数量增加,留守儿童问题日益突出,因此建立一套留守儿童信息管理系统对于及时掌握留守儿童的相关信息、提供精准帮扶具有重要意义。采用Java作为系统开发语言,能够为系统提供良好的跨平......
  • 交易系统:应用层、领域层分层架构设计
    大家好,我是汤师爷~线上线下交易系统的应用架构包括终端、应用层、领域层和关联系统。应用层能力应用层定义软件的应用功能,负责接收用户请求、协调领域层执行任务并返回结果。主要包括以下模块:1)C端服务模块为消费者提供完整的交易链路功能,包括加购、下单、支付、结算、拆单、......
  • 计算机毕业设计项目源码 大数据深度学习 基于聚类算法实现的二手房价分析及可视化系统
    标题:基于聚类算法实现的二手房价分析及可视化系统基于聚类算法实现的二手房价分析及可视化系统可以具备以下主要功能:数据采集与预处理:从各大二手房平台抓取房源信息,包括房价、面积、房型、位置等属性。数据清洗,处理缺失值、异常值和重复数据。数据标准化和归一化,以便于后......
  • 计算机毕设源码 大数据深度学习 基于聚类算法实现的房屋数据分析及可视化系统
    标题:基于聚类算法实现的房屋数据分析及可视化系统基于聚类算法的房屋数据分析及可视化系统主要功能可以包括以下几个方面:数据采集与预处理:收集房屋销售相关的数据,如房屋价格、面积、房间数量、位置、建造年份等。数据清洗,处理缺失值、异常值,进行标准化或归一化。聚类分析......
  • 浏览器中的剪切板是如何监听复制事件的?
    在前端开发中,监听浏览器剪切板的复制事件主要通过JavaScript的某些API和功能来实现。以下是具体的方法和步骤:使用ClipboardAPI:ClipboardAPI提供了读取和写入剪切板内容的能力。虽然直接读取剪切板内容可能受到浏览器的安全限制,但监听复制事件并修改剪切板内容是可行的。......
  • 百科园通用考试系统无法启动
    百科园通用考试系统无法启动欲做百科园,惊现报错无提示,查阅各论坛无果,拼尽全力无法战胜,求解报错信息error.log2024/12/169:11:24找不到指定的模块。(异常来自HRESULT:0x8007007E)System.Windows.Forms在System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance......