1.2.1 Qt中事件是如何进行传递——叙述篇(上)

1.2.1 Qt中事件是如何进行传递
1.2.2 Qt中的事件过滤器(eventFilter)
1.2.3 如何自己模拟发送事件消息

一、Qt中事件是如何进行传递

1、事件简介

事件是由应用程序内部或者外部产生的事情或者动作的总称。任何继承QObject的类都可以接收和处理事件。

外部的事件

由系统产生的,通常由底层窗口系统发来的事件,比如鼠标、键盘等事件,Qt接收到之后放入到系统的消息队列中,等待主程序的事件循环从队列中读取这些事件消息,然后转换为对应类型的QEvent对象,再依次下发下去(具体如何下发,见下文)。

内部的事件

是由Qt应用程序程序自发产生的,有两种方式。
第一种是调用QApplication::postEvent()函数,如QWidget的update()函数,如果需要重新绘制屏幕时,我们可以调用update()函数,这个时候程序内部会产生一个paintEvent事件就是通过postEvent这种方式,所以这个事件是在消息队列中,等待主事件循环来处理。
第二种方式是调用sendEvent()函数,如QWidget::repaint()函数,调用之后paintEvent事件不会在消息队列中进行等待,而是会立即被派发并执行。
在后续的文章中我们也会详解这两种方式的区别以及模拟并发送自定义的事件。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值