qt中sendevent_Qt自定义事件与事件的发送

本文详细介绍了在Qt中如何使用sendEvent和postEvent发送事件,包括自定义事件的创建、处理方法以及事件的优先级。通过示例代码演示了自定义事件的发送、接收及事件过滤器的使用,阐述了事件的传递顺序。
摘要由CSDN通过智能技术生成

1、发送事件由以下两个函数完成

static void QCoreApplication::postEvent (QObject* receiver, QEvent* event,

int priority=Qt::NormalEventPriority);

static bool QCoreApplication::sendEvent(QObject* receiver, QEvent* event)

receiver:指向接收事件的对象

event:表示需要发送的事件

priority:表示事件的优先级, 事件会按优先级排序,高优先级的事件排在队列的前面。 其取值为枚举类型 Qt::EventPriority 中的枚举值。

如下

Qt::HighEventPriority:值为 1。

Qt::NormalEventPriority:值为 0。

Qt::LowEventPriority:值为-1。

优先级只是一个相对值,其值可取介于规定的最大值和最小值之间的任何值,比如可使 priority 参数的值为 Qt::HighEventPriority +10。

2、发送事件(sendEvent)与发布事件(postEvent)

①、 发送(send)事件:把事件直接发送给接收事件的目标对象。事件发送之后不会被删除,

发送的事件通常创建在堆栈上。

②、发布(post)事件:

?把事件添加到事件队列中,并立即返回。

?发布事件必须在堆(比如使用 new)上创建事件,因为事件被发布后,事件队列将

获得事件的所有权并自动将其删除。 发布事件后再访问该事件是不安全的。

?发布事件还可以对事件进行合并(或称为压缩),比如在返回事件循环之前连续发

布了多个相同的事件,则这多个相同的事件会自动合并为一个单一的事件。 可合

并的事件有鼠标移动事件、调整大小事件等。

3、自定义事件原理

①、基本原理:事件其实就是使用的一个整数值表示的,因此在创建自定义事件时,只须给事件指定一个整数值即可,在 Qt 中,这个整数值是通过枚举类型 QEvent::Type 定义的,事件的其他信息可以封装在一个自定义的类之中。

②、 自定义的事件即可以是预定义类型,也可以是自定义类型的。

③、 自定义类型的事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值