diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp index fd89e479b8..1b154770f8 100644 --- a/src/gui/kernel/qwindow.cpp +++ b/src/gui/kernel/qwindow.cpp @@ -2234,7 +2234,7 @@ void QWindow::showNormal() quitting the application. Returns \c true on success, false if it has a parent window (in which case the top level window should be closed instead). - \sa destroy(), QGuiApplication::quitOnLastWindowClosed() + \sa destroy(), QGuiApplication::quitOnLastWindowClosed(), closeEvent() */ bool QWindow::close() { @@ -2319,6 +2319,19 @@ void QWindow::hideEvent(QHideEvent *ev) ev->ignore(); } +/*! + Override this to handle close events (\a ev). + + The function is called when the window is requested to close. Call \l{QEvent::ignore()} + on the event if you want to prevent the window from being closed. + + \sa close() +*/ +void QWindow::closeEvent(QCloseEvent *ev) +{ + Q_UNUSED(ev); +} + /*! Override this to handle any event (\a ev) sent to the window. Return \c true if the event was recognized and processed. @@ -2395,6 +2408,7 @@ bool QWindow::event(QEvent *ev) #endif case QEvent::Close: + closeEvent(static_cast(ev)); if (ev->isAccepted()) { Q_D(QWindow); bool wasVisible = isVisible(); diff --git a/src/gui/kernel/qwindow.h b/src/gui/kernel/qwindow.h index de6d7ffd31..b7c2af4916 100644 --- a/src/gui/kernel/qwindow.h +++ b/src/gui/kernel/qwindow.h @@ -69,6 +69,7 @@ class QMoveEvent; class QResizeEvent; class QShowEvent; class QHideEvent; +class QCloseEvent; class QKeyEvent; class QMouseEvent; #if QT_CONFIG(wheelevent) @@ -350,7 +351,7 @@ protected: virtual void showEvent(QShowEvent *); virtual void hideEvent(QHideEvent *); - // TODO Qt 6 - add closeEvent virtual handler + virtual void closeEvent(QCloseEvent *); virtual bool event(QEvent *) override; virtual void keyPressEvent(QKeyEvent *);