Qt中的事件处理、相应

24 篇文章 1 订阅
本文深入解析了Qt事件处理机制,包括事件循环、事件对象及处理流程。详细介绍了五种事件处理方式:重写特定事件处理函数、重写event()函数、安装事件过滤器、给QApplication对象安装事件过滤器以及重载notify()函数。
摘要由CSDN通过智能技术生成

Qt事件处理顺寻:

 QT程序需要在main()函数创建一个QCoreApplication对象,然后调用exec()函数。exec()函数就是开始QT的事件循环。执行exec()函数后,程序将进入事件循环来监听应用程序的事件。当事件发生时,QT将创建一个事件对象。QT中所有事件类都继承于QEvent。在事件对象创建完毕后,QT将创建的事件对象传递给QObject的event()函数。event()函数并不直接处理事件,而是按照事件对象的类型分派给特定的事件处理函数(event handler)。

转自:http://blog.51cto.com/9291927/1885986

QT提供了五种不同级别的事件处理和过滤:

    A、重写特定事件处理函数.

    最常见的事件处理办法就是重写mousePressEvent(), keyPressEvent(), paintEvent() 等特定事件处理函数。

 B、重写event()函数.

    重写event()函数时, 需要调用父类的event()函数来处理不需要处理或是不清楚如何处理的事件。

    return QWidget::event(event);

    C、在Qt对象上安装事件过滤器

    安装事件过滤器有两个步骤: (假设要用A来监视过滤B的事件)

    首先调用B的installEventFilter( const QOject *obj ), 以A的指针作为参数,所有发往B的事件都将先由A的eventFilter()处理。然后, A要重写QObject::eventFilter()函数, 在eventFilter() 中对事件进行处理。

    D、给QAppliction对象安装事件过滤器

如果给QApplication对象装上过滤器,那么所有的事件在发往任何其他的过滤器时,都要先经过当前eventFilter()。在QApplication::notify() 中, 是先调用qApp的过滤器, 再对事件进行分析, 以决定是否合并或丢弃。

    E、继承QApplication类,并重载notify()函数

    Qt是用QApplication::notify()函数来分发事件的,要在任何事件过滤器查看任何事件之前先得到这些事件,重写notify()函数是唯一的办法。通常来说事件过滤器更好用一些, 因为不需要去继承QApplication类,而且可以给QApplication对象安装任意个数的事件过滤器。

转自:https://blog.csdn.net/A642960662/article/details/66473871

另外关于Qt事件处理的一篇博客:https://www.cnblogs.com/bokeyuan-dlam/articles/6720359.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值