Qt学习之路26--事件处理、事件重写、关闭文本编辑器操作

消息处理模型

这里写图片描述
- GUI程序必须依赖操作系统运行
- GUI应用程序提供的功能必须由用户来触发
- 消息的产生一般是通过用户对应用程序进行了某种操作(如点击某个按钮),随之操作系统捕捉到这个操作,并让系统内核将这个操作事件转换成一个系统消息然后发送给应用程序,最后应用程序收到这个系统消息后就会调用相应的消息处理函数对这个用户操作进行最终的处理。

系统内核会将系统消息发送给应用程序,那么在Qt应用程序中系统内核是如何将发送的系统消息转换成Qt信号?

答案是通过事件处理来将系统消息转变成Qt信号

Qt中的事件处理

  • Qt平台将系统产生的消息转换成Qt事件
  • Qt事件是一个QEvent对象
  • Qt事件用于描述程序内部或外部发生的动作,这意味着QEvent对象用来描述操作系统发送回的消息
  • 一个系统消息对应着一个Qt事件,也就是一个QEvent对象
  • Qt的一个事件需要一个QObject对象来处理,并且任意的QObject对象都具备事件处理的能力
  • Qt事件相关类的继承关系图:
    这里写图片描述

Qt事件处理方式

  • Qt事件产生后立即被分发到QWidget对象,比如点击一个按钮后就会将点击按钮这个事件发送到对应的QWidget对象上(或是一个窗口,或是一个对话框)
  • 然后这个QWidget对象调用event()这个事件处理函数,因此,event()函数也是事件处理的入口
  • event()根据事件类型(由于操作系统发送的消息类型是各不相同的,且操作系统的消息和Qt事件是一一对应的,所以Qt事件对应的事件处理函数(event()函数的子函数)也是各不相同,所以需要在event()函数中判断对应的事件类型)调用不同的事件处理函数。
  • 在事件处理函数中发送Qt中预定义的信号,最后调用信号关联的槽函数。

场景分析:按钮点击

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值