简述
QEvent 是其他所有event类的基类,事件对象包含事件参数。
QT的主事件循环(QCoreApplication::exec()) 从事件队列中获得窗口的事件,把他们转换为QEvent ,然后分发给对象。
一般来说,事件来自底层的窗口系统(spontaneous() returns true),但是我们也可以通过QCoreApplication::sendEvent() 和QCoreApplication::postEvent() 来手动发送事件。
对象收到事件后会调用QObject::event()函数。该函数也可以在子类中实现,可以自定义事件和添加额外的时间类型。
QWidget::event() 是一个著名的例子。默认情况下,事件被分发给事件处理函数QObject::timerEvent() and QWidget::mouseMoveEvent()。通过 QObject::installEventFilter()可以拦截事件发送给另外一个对象。