Sur cette page

QWheelEvent Class

La classe QWheelEvent contient des paramètres qui décrivent un événement de molette. En savoir plus...

En-tête : #include <QWheelEvent>
CMake : find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake : QT += gui
Hérite de : QSinglePointEvent

Propriétés

Fonctions publiques

QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase, bool inverted, Qt::MouseEventSource source = Qt::MouseEventNotSynthesized, const QPointingDevice *device = QPointingDevice::primaryPointingDevice())
QPoint angleDelta() const
bool inverted() const
Qt::ScrollPhase phase() const
QPoint pixelDelta() const

Fonctions publiques réimplémentées

virtual bool isBeginEvent() const override
virtual bool isEndEvent() const override
virtual bool isUpdateEvent() const override

Fonctions protégées

QWheelEvent(QWheelEvent &&)
QWheelEvent &operator=(QWheelEvent &&)
QWheelEvent &operator=(const QWheelEvent &other)

Description détaillée

Les événements de molette sont envoyés au widget situé sous le curseur de la souris, mais si ce widget ne gère pas l’événement, ils sont envoyés au widget actif. Les événements de molette sont générés à la fois pour les molettes de souris et les gestes de défilement du pavé tactile. Il existe deux façons de lire le delta de l’événement de molette : angleDelta() renvoie les deltas en degrés de molette. Ces valeurs sont toujours fournies. pixelDelta() renvoie les deltas en pixels d’écran, et est disponible sur les plateformes disposant de pavés tactiles haute résolution, comme macOS. Si tel est le cas, device()->type() renverra QInputDevice::DeviceType::Touchpad.

Les fonctions position() et globalPosition() renvoient la position du curseur de la souris au moment de l'événement.

Un événement de molette contient un indicateur d’acceptation spécial qui indique si le récepteur souhaite recevoir cet événement. Vous devez appeler ignore() si vous ne gérez pas l’événement de molette ; cela garantit qu’il sera envoyé au widget parent.

La fonction QWidget::setEnabled() permet d'activer ou de désactiver les événements de souris et de clavier pour un widget.

Le gestionnaire d’événements ` QWidget::wheelEvent()` reçoit les événements de molette.

Voir également QMouseEvent et QWidget::grabMouse().

Documentation sur les propriétés

[read-only] angleDelta : QPoint

Cette propriété stocke l'angle de rotation de la molette, exprimé en huitièmes de degré

Une valeur positive indique que la molette a été tournée vers l'avant, en s'éloignant de l'utilisateur ; une valeur négative indique qu'elle a été tournée vers l'arrière, en se rapprochant de l'utilisateur. angleDelta().y() fournit l'angle de rotation de la molette verticale standard depuis l'événement précédent. angleDelta().x() fournit l'angle de rotation de la molette horizontale, si la souris en est équipée ; sinon, il reste à zéro.

La plupart des types de souris fonctionnent par paliers de 15 degrés ; dans ce cas, la valeur delta est un multiple de 120 ; c'est-à-dire 120 unités * 1/8 = 15 degrés.

Remarque : sur les plateformes prenant en charge le défilement phases, la valeur delta peut être nulle lorsque le défilement est sur le point de commencer (Qt::ScrollBegin) ou qu’il est terminé (Qt::ScrollEnd).

Fonctions d’accès :

QPoint angleDelta() const

Voir également pixelDelta().

[read-only] device : const QPointingDevice*

Cette propriété contient le périphérique à l'origine de l'événement de molette

Voir également pointingDevice().

[read-only] inverted : bool

Cette propriété reste valable même si les valeurs delta fournies avec l'événement sont inversées

Normalement, une molette verticale produira un QWheelEvent avec des valeurs delta positives si le haut de la molette s'éloigne de la main qui l'actionne. De même, un mouvement horizontal de la molette produira un QWheelEvent avec des valeurs delta positives si le haut de la molette est déplacé vers la gauche.

Cependant, sur certaines plateformes, ce comportement est configurable, de sorte que les mêmes opérations décrites ci-dessus produiront des valeurs delta négatives (mais de même amplitude). Grâce à la propriété « inverted », un consommateur d’événements de molette peut choisir de toujours suivre le sens de rotation de la molette, quels que soient les paramètres du système, mais uniquement pour certains widgets spécifiques.

Remarque : de nombreuses plateformes ne fournissent pas ce type d’informations. Sur ces plateformes, la fonction ` inverted ` renvoie toujours `false`.

Fonctions d’accès :

bool inverted() const

[read-only] phase : Qt::ScrollPhase

Cette propriété contient la phase de défilement associée à cet événement de molette

Remarque : les phases « Qt::ScrollBegin » et « Qt::ScrollEnd » ne sont actuellement prises en charge que sur macOS.

Fonctions d'accès :

Qt::ScrollPhase phase() const

[read-only] pixelDelta : QPoint

Cette propriété contient la distance de défilement à l'écran, exprimée en pixels

Cette valeur est fournie sur les plateformes prenant en charge les valeurs delta en pixels à haute résolution, telles que macOS. Elle doit être utilisée directement pour faire défiler le contenu à l'écran.

Remarque : sur les plateformes prenant en charge le défilement ( phases), le delta peut être nul lorsque le défilement est sur le point de commencer (Qt::ScrollBegin) ou qu’il est terminé (Qt::ScrollEnd).

Remarque : sous X11, cette valeur dépend du pilote et n’est pas fiable ; utilisez plutôt ` angleDelta()` à la place.

Fonctions d'accès :

QPoint pixelDelta() const

Voir également angleDelta().

Documentation des fonctions membres

QWheelEvent::QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase, bool inverted, Qt::MouseEventSource source = Qt::MouseEventNotSynthesized, const QPointingDevice *device = QPointingDevice::primaryPointingDevice())

Crée un objet d'événement « wheel ».

La propriété ` pos ` indique la position du curseur de la souris dans la fenêtre. La position en coordonnées globales est spécifiée par la propriété ` globalPos`.

pixelDelta contient la distance de défilement en pixels à l'écran, tandis que ` angleDelta ` contient l'angle de rotation de la molette. ` pixelDelta ` est facultatif et peut être nul.

Les états de la souris et du clavier au moment de l’événement sont spécifiés par buttons et modifiers.

La phase de défilement de l’événement est spécifiée par ` phase`, et ` source ` indique s’il s’agit d’un événement réel ou artificiel (synthétisé).

Si le système est configuré pour inverser les valeurs delta fournies avec l’événement (comme le défilement naturel du pavé tactile sous macOS), inverted doit être true. Sinon, inverted est false

Le périphérique à l’origine de l’événement de molette est spécifié par ` device`.

Voir également position(), globalPosition(), angleDelta(), pixelDelta(), phase(), inverted() et device().

[protected delete] QWheelEvent::QWheelEvent(QWheelEvent &&)

Crée par « move » une instance de ` QWheelEvent`. Cette fonction est supprimée.

QPoint QWheelEvent::angleDelta() const

Renvoie l'angle de rotation relatif de la molette, exprimé en huitièmes de degré. Une valeur positive indique que la molette a été tournée vers l'avant, en s'éloignant de l'utilisateur ; une valeur négative indique qu'elle a été tournée vers l'arrière, en se rapprochant de l'utilisateur. angleDelta().y() fournit l'angle de rotation de la molette verticale standard depuis l'événement précédent. angleDelta().x() fournit l'angle de rotation de la molette horizontale, si la souris en est équipée ; sinon, elle reste à zéro. Certaines souris permettent à l’utilisateur d’incliner la molette pour effectuer un défilement horizontal, et certains pavés tactiles prennent en charge un geste de défilement horizontal ; cela apparaîtra également dans angleDelta().x().

La plupart des souris fonctionnent par paliers de 15 degrés ; dans ce cas, la valeur delta est un multiple de 120 ; c'est-à-dire 120 unités * 1/8 = 15 degrés.

Cependant, certaines souris disposent de molettes à résolution plus fine et envoient des valeurs delta inférieures à 120 unités (moins de 15 degrés). Pour prendre en charge cette possibilité, vous pouvez soit additionner de manière cumulative les valeurs delta des événements jusqu’à ce que la valeur de 120 soit atteinte, puis faire défiler le widget, soit faire défiler partiellement le widget en réponse à chaque événement de molette. Mais pour offrir une expérience plus naturelle, privilégiez la méthode pixelDelta() sur les plateformes où elle est disponible.

Exemple :

void MyWidget::wheelEvent(QWheelEvent *event)
{
    QPoint numPixels = event->pixelDelta();
    QPoint numDegrees = event->angleDelta() / 8;

    if (!numPixels.isNull()) {
        scrollWithPixels(numPixels);
    } else if (!numDegrees.isNull()) {
        QPoint numSteps = numDegrees / 15;
        scrollWithDegrees(numSteps);
    }

    event->accept();
}

Remarque : sur les plateformes prenant en charge le défilement phases, le delta peut être nul lorsque :

  • le défilement est sur le point de commencer, mais que la distance n’a pas encore changé (Qt::ScrollBegin),
  • ou lorsque le défilement est terminé et que la distance n’a plus évolué (Qt::ScrollEnd).

Remarque : fonctiongetter pour la propriété angleDelta.

Voir également pixelDelta().

bool QWheelEvent::inverted() const

Indique si les valeurs delta fournies avec l'événement sont inversées.

Normalement, une molette verticale produira une QWheelEvent avec des valeurs delta positives si le haut de la molette s'éloigne de la main qui l'actionne. De même, un mouvement horizontal de la molette produira une QWheelEvent avec des valeurs delta positives si le haut de la molette est déplacé vers la gauche.

Cependant, sur certaines plateformes, ce comportement est configurable, de sorte que les mêmes opérations décrites ci-dessus produiront des valeurs delta négatives (mais de même amplitude). Grâce à la propriété « inverted », un consommateur d’événements de molette peut choisir de toujours suivre la direction de la molette, quels que soient les paramètres système, mais uniquement pour des widgets spécifiques. (Un cas d’utilisation possible serait que l’utilisateur fasse tourner la molette dans le même sens que la rotation d’un « Tumbler » visuel. Un autre cas d’utilisation consiste à faire en sorte que la poignée d’un curseur suive la direction du mouvement des doigts sur un pavé tactile, quelle que soit la configuration du système.)

Remarque : de nombreuses plateformes ne fournissent pas ce type d’informations. Sur ces plateformes, la propriété « inverted » renvoie toujours « false ».

Remarque : fonctiongetter pour la propriété « inverted ».

[override virtual] bool QWheelEvent::isBeginEvent() const

Réimplémente : QSinglePointEvent::isBeginEvent() const.

Renvoie true si la méthode phase() de cet événement est Qt::ScrollBegin.

[override virtual] bool QWheelEvent::isEndEvent() const

Réimplémente : QSinglePointEvent::isEndEvent() const.

Renvoie ` true ` si la méthode ` phase()` de cet événement est ` Qt::ScrollEnd`.

[override virtual] bool QWheelEvent::isUpdateEvent() const

Réimplémente : QSinglePointEvent::isUpdateEvent() const.

Renvoie true si la méthode phase() de cet événement est Qt::ScrollUpdate ou Qt::ScrollMomentum.

Qt::ScrollPhase QWheelEvent::phase() const

Renvoie la phase de défilement associée à cet événement de molette.

Remarque : les phases « Qt::ScrollBegin » et « Qt::ScrollEnd » ne sont actuellement prises en charge que sur macOS.

Remarque : fonctiongetter pour la propriété phase.

QPoint QWheelEvent::pixelDelta() const

Renvoie la distance de défilement en pixels à l'écran. Cette valeur est fournie sur les plateformes prenant en charge les valeurs delta en pixels à haute résolution, telles que macOS. Elle doit être utilisée directement pour faire défiler le contenu à l'écran.

Exemple :

void MyWidget::wheelEvent(QWheelEvent *event)
{
    QPoint numPixels = event->pixelDelta();
    QPoint numDegrees = event->angleDelta() / 8;

    if (!numPixels.isNull()) {
        scrollWithPixels(numPixels);
    } else if (!numDegrees.isNull()) {
        QPoint numSteps = numDegrees / 15;
        scrollWithDegrees(numSteps);
    }

    event->accept();
}

Remarque : sur les plateformes prenant en charge le défilement phases, le delta peut être nul lorsque :

  • le défilement est sur le point de commencer, mais que la distance n'a pas encore changé (Qt::ScrollBegin),
  • ou lorsque le défilement est terminé et que la distance n’a plus changé (Qt::ScrollEnd).

Remarque : sous X11, cette valeur dépend du pilote et n’est pas fiable ; utilisez plutôt ` angleDelta()` à la place.

Remarque : fonctiongetter pour la propriété pixelDelta.

[protected delete] QWheelEvent &QWheelEvent::operator=(QWheelEvent &&)

La commande « Move » attribue la classe « other » à cette instance « QWheelEvent ». Cette fonction est supprimée.

[noexcept protected default] QWheelEvent &QWheelEvent::operator=(const QWheelEvent &other)

Attribue par copie l'other à cette instance d'QWheelEvent.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.