qtqt-events

Event propagation in Qt


I've just the documentation on the Qt event system and the QEvent class. I'm interested in the behavior of the QObject::event() method. The documentation states:

This virtual function receives events to an object and should return true if the event e was recognized and processed.

What is the expected behavior when false is returned from the event() method? What else is attempted in order to handle the event? Is the event automatically forwarded to the parent object?

Note: I know the source is available, and I do have a copy. I'm ideally looking for some piece of documentation addressing this behavior.


Solution

  • I believe the best practice is to explicitly forward the events to the base-class event method if you do not wish to filter that event type (e.g. return QObject::event(event);) since the event function delegates events to specific handlers (e.g. QWidget::keyPressEvent).

    QCoreApplication::notify propagates events based on the return value. On true, it considers the event as consumed and stops. Otherwise, the event is passed to the object's parent. For more information, see Events and Filters and Another Look at Events.