5.4.0 "MainWindow" QEnterEvent(QPoint(73,92)) void QWidgetWindow::handleEnterLeaveEvent(QEvent*) calling dispatchEnterLeave() 2) static void QApplicationPrivate::dispatchEnterLeave(QWidget*, QWidget*, const QPointF&) > QGroupBox(0x2472910, name = "GroupBox") QObject(0x0) QApplicationPrivate::dispatchEnterLeave, ENTER: QGroupBox(0x2472910, name = "GroupBox") LEAVE: QObject(0x0) QApplicationPrivate::dispatchEnterLeave2, ENTER: (QMainWindow(0x7fffdd51db80, name = "Main") , QGroupBox(0x2472910, name = "GroupBox") ) LEAVE: () "Main" QEnterEvent(QPoint(73,92)) "GroupBox" QEnterEvent(QPoint(73,92)) static void QApplicationPrivate::dispatchEnterLeave(QWidget*, QWidget*, const QPointF&) < QGroupBox(0x2472910, name = "GroupBox") QObject(0x0) static bool QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&, bool) calling dispatchEnterLeave 2) static void QApplicationPrivate::dispatchEnterLeave(QWidget*, QWidget*, const QPointF&) > QLabel(0x25068b0, name = "Label") QGroupBox(0x2472910, name = "GroupBox") QApplicationPrivate::dispatchEnterLeave, ENTER: QLabel(0x25068b0, name = "Label") LEAVE: QGroupBox(0x2472910, name = "GroupBox") QApplicationPrivate::dispatchEnterLeave2, ENTER: (QLabel(0x25068b0, name = "Label") ) LEAVE: () "Label" QEnterEvent(QPoint(59,51)) static void QApplicationPrivate::dispatchEnterLeave(QWidget*, QWidget*, const QPointF&) < QLabel(0x25068b0, name = "Label") QGroupBox(0x2472910, name = "GroupBox") "MainWindow" QMouseEvent(MouseButtonPress, LeftButton, localPos=QPointF(70,61), screenPos=QPointF(472,384)) static bool QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&, bool) assigning leaveAfterRelease= QLabel(0x25068b0, name = "Label") "Label" QMouseEvent(MouseButtonPress, LeftButton, localPos=QPointF(58,31), screenPos=QPointF(472,384)) "GroupBox" QMouseEvent(MouseButtonPress, LeftButton, localPos=QPointF(70,61), screenPos=QPointF(472,384)) virtual void QXcbWindow::handleLeaveNotifyEvent(const xcb_leave_notify_event_t*) virtual void QXcbWindow::handleLeaveNotifyEvent(const xcb_leave_notify_event_t*) calling QWindowSystemInterface::handleLeaveEvent() 2) static void QGuiApplicationPrivate::processLeaveEvent(QWindowSystemInterfacePrivate::LeaveEvent*) Leave with mouse down # 0 "MainWindow" void QWidgetWindow::handleEnterLeaveEvent(QEvent*) calling dispatchEnterLeave() 1) static void QApplicationPrivate::dispatchEnterLeave(QWidget*, QWidget*, const QPointF&) > QObject(0x0) QLabel(0x25068b0, name = "Label") QApplicationPrivate::dispatchEnterLeave, ENTER: QObject(0x0) LEAVE: QLabel(0x25068b0, name = "Label") QApplicationPrivate::dispatchEnterLeave2, ENTER: () LEAVE: (QLabel(0x25068b0, name = "Label") , QGroupBox(0x2472910, name = "GroupBox") , QMainWindow(0x7fffdd51db80, name = "Main") ) Leave with mouse down # 1 "Label" Leave with mouse down # 2 "GroupBox" Leave with mouse down # 3 "Main" static void QApplicationPrivate::dispatchEnterLeave(QWidget*, QWidget*, const QPointF&) < QObject(0x0) QLabel(0x25068b0, name = "Label") --------------> Additional leave on mouse release is received from X11: virtual void QXcbWindow::handleLeaveNotifyEvent(const xcb_leave_notify_event_t*) virtual void QXcbWindow::handleLeaveNotifyEvent(const xcb_leave_notify_event_t*) calling QWindowSystemInterface::handleLeaveEvent() 2) "MainWindow" QMouseEvent(MouseButtonRelease, LeftButton, localPos=QPointF(70,130), screenPos=QPointF(472,453)) "Label" QMouseEvent(MouseButtonRelease, LeftButton, localPos=QPointF(58,100), screenPos=QPointF(472,453)) "GroupBox" QMouseEvent(MouseButtonRelease, LeftButton, localPos=QPointF(70,130), screenPos=QPointF(472,453)) "Main" QMouseEvent(MouseButtonRelease, LeftButton, localPos=QPointF(70,130), screenPos=QPointF(472,453)) static bool QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&, bool) leaveAfterRelease= QLabel(0x25068b0, name = "Label") mouseGrabber= QObject(0x0) static bool QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&, bool) calling dispatchEnterLeave 3) static void QApplicationPrivate::dispatchEnterLeave(QWidget*, QWidget*, const QPointF&) > QMainWindow(0x7fffdd51db80, name = "Main") QLabel(0x25068b0, name = "Label") QApplicationPrivate::dispatchEnterLeave, ENTER: QMainWindow(0x7fffdd51db80, name = "Main") LEAVE: QLabel(0x25068b0, name = "Label") QApplicationPrivate::dispatchEnterLeave2, ENTER: () LEAVE: (QLabel(0x25068b0, name = "Label") , QGroupBox(0x2472910, name = "GroupBox") ) Leave with mouse up 4 "Label" Leave with mouse up 5 "GroupBox" static void QApplicationPrivate::dispatchEnterLeave(QWidget*, QWidget*, const QPointF&) < QMainWindow(0x7fffdd51db80, name = "Main") QLabel(0x25068b0, name = "Label") static void QGuiApplicationPrivate::processLeaveEvent(QWindowSystemInterfacePrivate::LeaveEvent*) Leave with mouse up 6 "MainWindow" void QWidgetWindow::handleEnterLeaveEvent(QEvent*) calling dispatchEnterLeave() 1) static void QApplicationPrivate::dispatchEnterLeave(QWidget*, QWidget*, const QPointF&) > QObject(0x0) QMainWindow(0x7fffdd51db80, name = "Main") QApplicationPrivate::dispatchEnterLeave, ENTER: QObject(0x0) LEAVE: QMainWindow(0x7fffdd51db80, name = "Main") QApplicationPrivate::dispatchEnterLeave2, ENTER: () LEAVE: (QMainWindow(0x7fffdd51db80, name = "Main") ) Leave with mouse up 7 "Main" static void QApplicationPrivate::dispatchEnterLeave(QWidget*, QWidget*, const QPointF&) < QObject(0x0) QMainWindow(0x7fffdd51db80, name = "Main")