Qt的5个级别事件处理和事件过滤方法

Posted 道亦无名

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt的5个级别事件处理和事件过滤方法相关的知识,希望对你有一定的参考价值。

QT 提供了5个级别的事件处理和事件过滤的方法,如下:

  1. 重新实现特殊事件处理器
    比如: mousePressEvent(), keyPressEvent(), paintEvent() 。 这是最常规的事件处理方法。

  2. 重新实现QObject::event()
    这一般用在Qt没有提供该事件的处理函数时。也就是,我们增加新的事件时。 这一般用在Qt没有提供该事件的处理函数时。也就是,我们增加新的事件时。

  3. 在QObject中安装事件过滤器

  4. 在QApplication对象中安装事件过滤器
    QApplication 上的事件过滤器将捕获应用程序的所有事件,而且第一个获得该事件。也就是说事件在发送给其它任何一个event filter之前发送给QApplication的event filter。

  5. 子类化QApplication并且重新实现notify()
    Qt使用 notify()来分发事件。要想在任何事件处理器捕获事件之前捕获事件,唯一的方法就是重新实现QApplication 的 notify()方法。

以上是关于Qt的5个级别事件处理和事件过滤方法的主要内容,如果未能解决你的问题,请参考以下文章

Python Qt GUI设计:5种事件处理机制(提升篇—3)

Python Qt GUI设计:5种事件处理机制(提升篇—3)

Qt5.5 如何在应用程序级别覆盖 MousePress 事件坐标

Qt 事件处理和事件过滤器的返回值

Qt 的事件

QT父子窗口事件传递与事件过滤器(讲了一些原理,比较清楚)