Qt的主事件回路(QApplication::exec())从事件队列里取得本地窗口系统事件,并把它们转换为QEvent并且把这些转换过的事件发给QObject。
通常情况下,来自于窗口系统的事件(spontaneous()返回真),但是它也可以使用QApplication::sendEvent()和QApplication::postEvent()手动发送事件(spontaneous()返回假)。
QObject通过它们的QObject::event()函数调用来接收事件。这个函数可以在子类中重新实现来处理自定义的事件和添加额外的事件类型,QWidget::event()就是一个著名的例子。默认情况下,像QObject::timerEvent()和QWidget::mouseMoveEvent()这样的事件可以被发送给事件处理函数。QObject::installEventFilter()允许一个对象中途截取发往另一个对象的事件。
基本的QEvent只包含了一个事件类型参数。QEvent的子类包含了额外的描述特定事件的参数。
QEvent 类参考手册
- [QtCore module]
QEvent 类是所有 event 类的基类. Event 对象包含了 event 的参数. 更多...
- #include <QEvent>
详细描述
QEvent 类是所有 event 类的基类. Event 对象包含了 event 的参数. 更多...
Qt 的主 event loop (QCoreApplication::exec()) 从 event queue 中取出 native 的窗口系统的所有 event , 然后把它们转换成 QEvents, 并将转换过的 event 发送到相应的 QObject 中.
通常, event 由底层的窗口系统 ( 可以通过调用 event 的 spontaneous() 并根据其返回值来是否为 true 来判断 ) 发送, 但是也可以调用 QCoreApplication::sendEvent() 或者QCoreApplication::postEvent() (spontaneous() 返回 false ) 来手动的发送指定的事件。
QObjects 通过调用自身的 QObject::event() 函数来查收事件. 可以在子类中重写该函数来定制处理事件,以及添加程序员实现的事件类型; QWidget::event() 就是这样一个著名的例子。默认情况下, event 被发送到诸如 QObject::timerEvent() 以及 QWidget::mouseMoveEvent() 之类的 event 处理函数 .
QObject::installEventFilter() 方法允许拦截发往指定对象的事件。
基础的 QEvent 只包含一个事件类型参数以及一个 "accept" 标志. 该 accept 标志通过调用事件的 accept() 方法来置位 , 以及通过调用事件的 ignore() 方法来清空. 默认情况是置位的, 注意不要依赖这个条件,因为在其子类的 constructor 中程序员可以选择清空该标志.
派生的 QEvent 子类包含描述该特定 event 的其它参数.
参考 QObject::event(), QObject::installEventFilter(), QWidget::event(), QCoreApplication::sendEvent(), QCoreApplication::postEvent(), 以及 QCoreApplication::processEvents().
小结:关于QT类 QEvent 参考手册 的内容介绍完了,希望本文对你有所帮助!更多相关内容请参考编辑推荐。