![]() |
Qt 6.x
The Qt SDK
|
QPointerEvent instances are stack-allocated in QGuiApplicationPrivate::processMouseEvent(), QGuiApplicationPrivate::processTouchEvent() etc., and sent to the application via QCoreApplication::sendSpontaneousEvent() (taking QWindow and QEvent pointer arguments). If the window is a QQuickWindow, the QTouchEvent arrives to QQuickWindow::event() which then dispatches to the QQuickDeliveryAgent. QQuickDeliveryAgent contains much of the event delivery code. In fact, it's quite complex, for legacy reasons such as touch->mouse synthesis in three possible layers, handling events in QQuickItem subclasses in C++, event compression, multiple kinds of event filtering, drag-and-drop, dealing with popup menus and so on; but let's start with the ideal case: no synthesis, no filtering, no popups, and all events are handled in Pointer Handlers.
Here are some "ideal" scenarios: