En esta página

QWheelEvent Class

La clase QWheelEvent contiene parámetros que describen un evento de rueda. Más...

Cabecera: #include <QWheelEvent>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Hereda: QSinglePointEvent

Propiedades

Funciones públicas

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

Funciones públicas reimplementadas

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

Descripción Detallada

Los eventos de rueda se envían al widget bajo el cursor del ratón, pero si ese widget no gestiona el evento se envían al widget de foco. Los eventos de rueda se generan tanto para las ruedas del ratón como para los gestos de desplazamiento del trackpad. Hay dos formas de leer el delta del evento de rueda: angleDelta() devuelve los deltas en grados de rueda. Estos valores se proporcionan siempre. pixelDelta() devuelve los deltas en píxeles de pantalla, y está disponible en plataformas que tienen trackpads de alta resolución, como macOS. Si ese es el caso, device()->type() devolverá QInputDevice::DeviceType::Touchpad.

Las funciones position() y globalPosition() devuelven la posición del cursor del ratón en el momento del evento.

Un evento de rueda contiene una bandera especial de aceptación que indica si el receptor desea el evento. Deberías llamar a ignore() si no manejas el evento de rueda; esto asegura que será enviado al widget padre.

La función QWidget::setEnabled() puede utilizarse para activar o desactivar los eventos de ratón y teclado de un widget.

El manejador de eventos QWidget::wheelEvent() recibe los eventos de rueda.

Ver también QMouseEvent y QWidget::grabMouse().

Documentación de propiedades

[read-only] angleDelta : QPoint

Esta propiedad contiene la cantidad relativa que la rueda fue rotada, en octavos de grado.

Un valor positivo indica que la rueda se ha girado hacia delante, alejándose del usuario; un valor negativo indica que la rueda se ha girado hacia atrás, acercándose al usuario. angleDelta().y() proporciona el ángulo con el que se ha girado la rueda vertical común del ratón desde el evento anterior. angleDelta().x() proporciona el ángulo con el que se ha girado la rueda horizontal del ratón, si el ratón tiene rueda horizontal; en caso contrario, se mantiene en cero.

La mayoría de los tipos de ratón funcionan en pasos de 15 grados, en cuyo caso el valor delta es un múltiplo de 120; es decir, 120 unidades * 1/8 = 15 grados.

Nota: En plataformas que soportan desplazamiento phases, el delta puede ser nulo cuando el desplazamiento está a punto de comenzar (Qt::ScrollBegin) o ha finalizado (Qt::ScrollEnd).

Funciones de acceso:

QPoint angleDelta() const

Véase también pixelDelta().

[read-only] device : const QPointingDevice*

Esta propiedad contiene el dispositivo desde el que se originó el evento de rueda

Véase también pointingDevice().

[read-only] inverted : bool

Esta propiedad mantiene si los valores delta entregados con el evento están invertidos

Normalmente, una rueda vertical producirá un QWheelEvent con valores delta positivos si la parte superior de la rueda está girando lejos de la mano que la maneja. Del mismo modo, un movimiento horizontal de la rueda producirá un QWheelEvent con valores delta positivos si la parte superior de la rueda se mueve hacia la izquierda.

Sin embargo, en algunas plataformas esto es configurable, de modo que las mismas operaciones descritas anteriormente producirán valores delta negativos (pero con la misma magnitud). Con la propiedad invertida un consumidor de eventos de rueda puede elegir seguir siempre la dirección de la rueda, independientemente de la configuración del sistema, pero sólo para widgets específicos.

Nota: Muchas plataformas no proporcionan esta información. En tales plataformas inverted siempre devuelve false.

Funciones de acceso:

bool inverted() const

[read-only] phase : Qt::ScrollPhase

Esta propiedad contiene la fase de desplazamiento de este evento de rueda

Nota: Las fases Qt::ScrollBegin y Qt::ScrollEnd sólo están soportadas actualmente en macOS.

Funciones de acceso:

Qt::ScrollPhase phase() const

[read-only] pixelDelta : QPoint

Esta propiedad mantiene la distancia de desplazamiento en píxeles en pantalla.

Este valor se proporciona en plataformas que soportan valores delta basados en píxeles de alta resolución, como macOS. El valor debe utilizarse directamente para desplazar el contenido por la pantalla.

Nota: En las plataformas que admiten el desplazamiento phases, el delta puede ser nulo cuando el desplazamiento está a punto de comenzar (Qt::ScrollBegin) o ha finalizado (Qt::ScrollEnd).

Nota: En X11 este valor es específico del controlador y poco fiable, utilice angleDelta() en su lugar.

Funciones de acceso:

QPoint pixelDelta() const

Véase también angleDelta().

Documentación de las funciones miembro

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())

Construye un objeto de evento de rueda.

pos proporciona la posición del cursor del ratón dentro de la ventana. La posición en coordenadas globales se especifica mediante globalPos.

pixelDelta contiene la distancia de desplazamiento en píxeles en pantalla, mientras que angleDelta contiene el ángulo de rotación de la rueda. pixelDelta es opcional y puede ser nulo.

Los estados del ratón y del teclado en el momento del evento se especifican mediante buttons y modifiers.

La fase de desplazamiento del evento se especifica mediante phase, y source indica si se trata de un evento genuino o artificial (sintetizado).

Si el sistema está configurado para invertir los valores delta entregados con el evento (como el desplazamiento natural del touchpad en macOS), inverted debe ser true. En caso contrario, inverted es false

El dispositivo desde el que se originó el evento de rueda se especifica mediante device.

Véase también position(), globalPosition(), angleDelta(), pixelDelta(), phase(), inverted(), y device().

QPoint QWheelEvent::angleDelta() const

Devuelve la cantidad relativa en que se giró la rueda, en octavos de grado. Un valor positivo indica que la rueda se giró hacia delante, alejándose del usuario; un valor negativo indica que la rueda se giró hacia atrás, acercándose al usuario. angleDelta().y() proporciona el ángulo con el que se giró la rueda vertical común del ratón desde el evento anterior. angleDelta().x() proporciona el ángulo con el que se giró la rueda horizontal del ratón, si el ratón tiene una rueda horizontal; de lo contrario, permanece en cero. Algunos ratones permiten al usuario inclinar la rueda para realizar un desplazamiento horizontal, y algunos touchpads soportan un gesto de desplazamiento horizontal; que también aparecerá en angleDelta().x().

La mayoría de los tipos de ratón funcionan en pasos de 15 grados, en cuyo caso el valor delta es un múltiplo de 120; es decir, 120 unidades * 1/8 = 15 grados.

Sin embargo, algunos ratones tienen ruedas de resolución más fina y envían valores delta inferiores a 120 unidades (menos de 15 grados). Para dar soporte a esta posibilidad, puedes sumar acumulativamente los valores delta de los eventos hasta alcanzar el valor de 120, y entonces desplazar el widget, o puedes desplazar parcialmente el widget en respuesta a cada evento de rueda. Pero para proporcionar una sensación más nativa, deberías preferir pixelDelta() en plataformas donde esté disponible.

Ejemplo:

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();
}

Nota: En las plataformas que soportan el desplazamiento phases, el delta puede ser nulo cuando:

  • el desplazamiento está a punto de comenzar, pero la distancia aún no ha cambiado (Qt::ScrollBegin),
  • o el desplazamiento ha finalizado y la distancia ya no ha cambiado (Qt::ScrollEnd).

Nota: Función Getter para la propiedad angleDelta.

Véase también pixelDelta().

bool QWheelEvent::inverted() const

Devuelve si los valores delta entregados con el evento están invertidos.

Normalmente, una rueda vertical producirá un QWheelEvent con valores delta positivos si la parte superior de la rueda gira alejándose de la mano que la maneja. Del mismo modo, un movimiento horizontal de la rueda producirá un QWheelEvent con valores delta positivos si la parte superior de la rueda se mueve hacia la izquierda.

Sin embargo, en algunas plataformas esto es configurable, de modo que las mismas operaciones descritas anteriormente producirán valores delta negativos (pero con la misma magnitud). Con la propiedad invertida un consumidor de eventos de rueda puede elegir seguir siempre la dirección de la rueda, independientemente de la configuración del sistema, pero sólo para widgets específicos. (Un caso de uso podría ser que el usuario gire la rueda en la misma dirección que gira un Tumbler visual. Otro caso de uso es hacer que un mando deslizante siga la dirección de movimiento de los dedos en un touchpad independientemente de la configuración del sistema).

Nota: Muchas plataformas no proporcionan esta información. En estas plataformas, inverted siempre devuelve false.

Nota: Función Getter para la propiedad inverted.

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

Reimplementa: QSinglePointEvent::isBeginEvent() const.

Devuelve true si el phase() de este evento es Qt::ScrollBegin.

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

Reimplementa: QSinglePointEvent::isEndEvent() const.

Devuelve true si el phase() de este evento es Qt::ScrollEnd.

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

Reimplementa: QSinglePointEvent::isUpdateEvent() const.

Devuelve true si phase() de este evento es Qt::ScrollUpdate o Qt::ScrollMomentum.

Qt::ScrollPhase QWheelEvent::phase() const

Devuelve la fase de desplazamiento de este evento de rueda.

Nota: Las fases Qt::ScrollBegin y Qt::ScrollEnd sólo se soportan actualmente en macOS.

Nota: Función Getter para la fase de propiedad.

QPoint QWheelEvent::pixelDelta() const

Devuelve la distancia de desplazamiento en píxeles en pantalla. Este valor se proporciona en plataformas que admiten valores delta basados en píxeles de alta resolución, como macOS. El valor debe utilizarse directamente para desplazar contenido en pantalla.

Ejemplo:

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();
}

Nota: En las plataformas que admiten el desplazamiento phases, el delta puede ser nulo cuando:

  • el desplazamiento está a punto de comenzar, pero la distancia aún no ha cambiado (Qt::ScrollBegin),
  • o el desplazamiento ha finalizado y la distancia ya no ha cambiado (Qt::ScrollEnd).

Nota: En X11 este valor es específico del driver y poco fiable, utilice angleDelta() en su lugar.

Nota: Función Getter para la propiedad pixelDelta.

© 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.