Change QWidget::enterEvent signature to take a QEnterEvent

This is a source incompatible change for widget implementors.
Leaving the old enterEvent as a virtual overload is problematic due to
shadowing. Best to make a clean cut, widget reimplementors will get a compile
time warning if they mark their override as such, or if they try to call the
parent class implementation.

Addresses ### Qt 6 comment.

[ChangeLog][QtWidgets][QWidget] The virtual enterEvent handler now receives
a QEnterEvent, which contains information about mouse position and button
states, rather than a plain QEvent.

Change-Id: I233f594fd79c0c090983b3db8532913d00132fde
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
This commit is contained in:
Volker Hilsheimer 2020-09-02 12:04:07 +02:00
parent 403b01f866
commit 0f39cfae93
14 changed files with 21 additions and 22 deletions

View File

@ -94,7 +94,7 @@ QSize QVistaBackButton::sizeHint() const
return QSize(width, height); return QSize(width, height);
} }
void QVistaBackButton::enterEvent(QEvent *event) void QVistaBackButton::enterEvent(QEnterEvent *event)
{ {
if (isEnabled()) if (isEnabled())
update(); update();

View File

@ -75,7 +75,7 @@ public:
inline QSize minimumSizeHint() const override inline QSize minimumSizeHint() const override
{ return sizeHint(); } { return sizeHint(); }
void enterEvent(QEvent *event) override; void enterEvent(QEnterEvent *event) override;
void leaveEvent(QEvent *event) override; void leaveEvent(QEvent *event) override;
void paintEvent(QPaintEvent *event) override; void paintEvent(QPaintEvent *event) override;
}; };

View File

@ -8756,7 +8756,7 @@ bool QWidget::event(QEvent *event)
QCoreApplication::sendEvent(const_cast<QWidget *>(this), &tip); QCoreApplication::sendEvent(const_cast<QWidget *>(this), &tip);
} }
#endif #endif
enterEvent(event); enterEvent(static_cast<QEnterEvent*>(event));
break; break;
case QEvent::Leave: case QEvent::Leave:
@ -9402,7 +9402,7 @@ void QWidget::focusOutEvent(QFocusEvent *)
} }
/*! /*!
\fn void QWidget::enterEvent(QEvent *event) \fn void QWidget::enterEvent(QEnterEvent *event)
This event handler can be reimplemented in a subclass to receive This event handler can be reimplemented in a subclass to receive
widget enter events which are passed in the \a event parameter. widget enter events which are passed in the \a event parameter.
@ -9413,12 +9413,10 @@ void QWidget::focusOutEvent(QFocusEvent *)
\sa leaveEvent(), mouseMoveEvent(), event() \sa leaveEvent(), mouseMoveEvent(), event()
*/ */
void QWidget::enterEvent(QEvent *) void QWidget::enterEvent(QEnterEvent *)
{ {
} }
// ### Qt 6: void QWidget::enterEvent(QEnterEvent *).
/*! /*!
\fn void QWidget::leaveEvent(QEvent *event) \fn void QWidget::leaveEvent(QEvent *event)

View File

@ -75,6 +75,7 @@ class QMouseEvent;
class QWheelEvent; class QWheelEvent;
class QHoverEvent; class QHoverEvent;
class QKeyEvent; class QKeyEvent;
class QEnterEvent;
class QFocusEvent; class QFocusEvent;
class QPaintEvent; class QPaintEvent;
class QMoveEvent; class QMoveEvent;
@ -622,7 +623,7 @@ protected:
virtual void keyReleaseEvent(QKeyEvent *event); virtual void keyReleaseEvent(QKeyEvent *event);
virtual void focusInEvent(QFocusEvent *event); virtual void focusInEvent(QFocusEvent *event);
virtual void focusOutEvent(QFocusEvent *event); virtual void focusOutEvent(QFocusEvent *event);
virtual void enterEvent(QEvent *event); virtual void enterEvent(QEnterEvent *event);
virtual void leaveEvent(QEvent *event); virtual void leaveEvent(QEvent *event);
virtual void paintEvent(QPaintEvent *event); virtual void paintEvent(QPaintEvent *event);
virtual void moveEvent(QMoveEvent *event); virtual void moveEvent(QMoveEvent *event);

View File

@ -154,7 +154,7 @@ protected:
fast = false; fast = false;
} }
void enterEvent(QEvent *) override { void enterEvent(QEnterEvent *) override {
startTimer(); startTimer();
} }

View File

@ -129,7 +129,7 @@ public:
QSize minimumSizeHint() const override QSize minimumSizeHint() const override
{ return sizeHint(); } { return sizeHint(); }
void enterEvent(QEvent *event) override; void enterEvent(QEnterEvent *event) override;
void leaveEvent(QEvent *event) override; void leaveEvent(QEvent *event) override;
void paintEvent(QPaintEvent *event) override; void paintEvent(QPaintEvent *event) override;
@ -205,7 +205,7 @@ QSize QDockWidgetTitleButton::sizeHint() const
return QSize(size, size); return QSize(size, size);
} }
void QDockWidgetTitleButton::enterEvent(QEvent *event) void QDockWidgetTitleButton::enterEvent(QEnterEvent *event)
{ {
if (isEnabled()) update(); if (isEnabled()) update();
QAbstractButton::enterEvent(event); QAbstractButton::enterEvent(event);

View File

@ -3502,7 +3502,7 @@ void QMenu::mouseMoveEvent(QMouseEvent *e)
/*! /*!
\reimp \reimp
*/ */
void QMenu::enterEvent(QEvent *) void QMenu::enterEvent(QEnterEvent *)
{ {
Q_D(QMenu); Q_D(QMenu);
d->hasReceievedEnter = true; d->hasReceievedEnter = true;

View File

@ -249,7 +249,7 @@ protected:
#if QT_CONFIG(wheelevent) #if QT_CONFIG(wheelevent)
void wheelEvent(QWheelEvent *) override; void wheelEvent(QWheelEvent *) override;
#endif #endif
void enterEvent(QEvent *) override; void enterEvent(QEnterEvent *) override;
void leaveEvent(QEvent *) override; void leaveEvent(QEvent *) override;
void hideEvent(QHideEvent *) override; void hideEvent(QHideEvent *) override;
void paintEvent(QPaintEvent *) override; void paintEvent(QPaintEvent *) override;

View File

@ -83,7 +83,7 @@ public:
QSize sizeHint() const override; QSize sizeHint() const override;
QSize minimumSizeHint() const override QSize minimumSizeHint() const override
{ return sizeHint(); } { return sizeHint(); }
void enterEvent(QEvent *event) override; void enterEvent(QEnterEvent *event) override;
void leaveEvent(QEvent *event) override; void leaveEvent(QEvent *event) override;
void paintEvent(QPaintEvent *event) override; void paintEvent(QPaintEvent *event) override;
}; };
@ -2814,7 +2814,7 @@ QSize CloseButton::sizeHint() const
return QSize(width, height); return QSize(width, height);
} }
void CloseButton::enterEvent(QEvent *event) void CloseButton::enterEvent(QEnterEvent *event)
{ {
if (isEnabled()) if (isEnabled())
update(); update();

View File

@ -527,7 +527,7 @@ void QToolButtonPrivate::_q_actionTriggered()
/*! /*!
\reimp \reimp
*/ */
void QToolButton::enterEvent(QEvent * e) void QToolButton::enterEvent(QEnterEvent * e)
{ {
Q_D(QToolButton); Q_D(QToolButton);
if (d->autoRaise) if (d->autoRaise)

View File

@ -112,7 +112,7 @@ protected:
void paintEvent(QPaintEvent *) override; void paintEvent(QPaintEvent *) override;
void actionEvent(QActionEvent *) override; void actionEvent(QActionEvent *) override;
void enterEvent(QEvent *) override; void enterEvent(QEnterEvent *) override;
void leaveEvent(QEvent *) override; void leaveEvent(QEvent *) override;
void timerEvent(QTimerEvent *) override; void timerEvent(QTimerEvent *) override;
void changeEvent(QEvent *) override; void changeEvent(QEvent *) override;

View File

@ -943,7 +943,7 @@ public:
installEventFilter(this); installEventFilter(this);
} }
void enterEvent(QEvent *event) void enterEvent(QEnterEvent *event)
{ {
enterCount++; enterCount++;
QWidget::enterEvent(event); QWidget::enterEvent(event);

View File

@ -5596,7 +5596,7 @@ public:
r = QRegion(); r = QRegion();
} }
void enterEvent(QEvent *) override { ++enters; } void enterEvent(QEnterEvent *) override { ++enters; }
void leaveEvent(QEvent *) override { ++leaves; } void leaveEvent(QEvent *) override { ++leaves; }
void resetCounts() void resetCounts()
@ -9627,7 +9627,7 @@ void tst_QWidget::syntheticEnterLeave()
{ {
public: public:
using QWidget::QWidget; using QWidget::QWidget;
void enterEvent(QEvent *) override { ++numEnterEvents; } void enterEvent(QEnterEvent *) override { ++numEnterEvents; }
void leaveEvent(QEvent *) override { ++numLeaveEvents; } void leaveEvent(QEvent *) override { ++numLeaveEvents; }
int numEnterEvents = 0; int numEnterEvents = 0;
int numLeaveEvents = 0; int numLeaveEvents = 0;
@ -9742,7 +9742,7 @@ void tst_QWidget::taskQTBUG_4055_sendSyntheticEnterLeave()
{ {
public: public:
using QWidget::QWidget; using QWidget::QWidget;
void enterEvent(QEvent *) override { ++numEnterEvents; } void enterEvent(QEnterEvent *) override { ++numEnterEvents; }
void mouseMoveEvent(QMouseEvent *event) override void mouseMoveEvent(QMouseEvent *event) override
{ {
QCOMPARE(event->button(), Qt::NoButton); QCOMPARE(event->button(), Qt::NoButton);

View File

@ -61,7 +61,7 @@ public:
update(); update();
} }
void enterEvent(QEvent *) void enterEvent(QEnterEvent *)
{ {
s = 200; s = 200;
v = 200; v = 200;