第38课 - Qt 中的事件处理(上)

来源:互联网 发布:淘宝卖家进入 编辑:程序博客网 时间:2024/05/18 01:48

一、GUI应用程序回顾

这里写图片描述


1、GUI应用程序的特点:

1:需要操作系统的支持
2:需要用户的操作来获取功能

2、GUI消息处理过程:

1:用户进行操作
2:然后是操作系统首先感知到用户的操作,而不是GUI应用程序首先感知到用户的操作
3:之后操作系统将系统消息传输到GUI应用程序的消息处理函数上,响应用户的操作


3、Qt也是一种GUI,那么用户操作产生的系统消息和Qt信号是一样的吗?

答案是否定的。系统消息是操作系统产生的,而Qt信号是GUI应用程序自己定义的一种信号。


4、那么操作系统发送的系统消息是如何转化为Qt消息的呢?


二、Qt中的事件处理

  • Qt平台将系统产生的消息转换为Qt事件
  • Qt事件是一个QEvent对象
  • Qt事件用于描述程序内部或者外部发生的动作
  • (Qt事件发生了就需要处理,那么谁来处理呢?)
  • 任意的QObject对象都具备事件处理的能力。

这里写图片描述


1、Qt中的事件处理过程:

这里写图片描述


(当用户操作后,操作系统将系统消息传送给GUI应用程序,这时候就会产生一个Qt事件,接下来的事情就从上图展开。。。

需要注意的是:Qt事件被发送到QWidget对象,比如是按键事件,那么就会被发送到按键这个QWidget对象上,每一个QWidget对象都有一个event成员函数,这个evevt成员函数就会根据事件的类型调用不同的事件处理子函数,这个事件处理子函数一方面更新GUI界面,另一方面就是发送Qt中预定义的信号,而这个信号就是关联的对应的槽函数。)


2、场景分析(以QPushButton为例)

这里写图片描述

event调用了子函数mouseReleaseEvent成员函数,mouseReleaseEvent成员函数又调用了click()函数,而click函数就可以产生Qt预定义的clicked()信号。

0 0
原创粉丝点击