QWheelEvent Class
QWheelEvent 클래스에는 휠 이벤트를 설명하는 매개변수들이 포함되어 있습니다. 더 보기...
| 헤더: | #include <QWheelEvent> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| 상속: | QSinglePointEvent |
- 상속된 멤버를 포함한 모든 멤버 목록
- 사용 중단된 멤버
- 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()) | |
| QPoint | angleDelta() const |
| bool | inverted() const |
| Qt::ScrollPhase | phase() const |
| QPoint | pixelDelta() const |
재구현된 공용 함수
| virtual bool | isBeginEvent() const override |
| virtual bool | isEndEvent() const override |
| virtual bool | isUpdateEvent() const override |
보호된 함수
| QWheelEvent(QWheelEvent &&) | |
| QWheelEvent & | operator=(QWheelEvent &&) |
| QWheelEvent & | operator=(const QWheelEvent &other) |
상세 설명
휠 이벤트는 마우스 커서가 위치한 위젯으로 전송되지만, 해당 위젯이 이벤트를 처리하지 않으면 포커스가 있는 위젯으로 전송됩니다. 휠 이벤트는 마우스 휠과 트랙패드 스크롤 제스처 모두에서 생성됩니다. 휠 이벤트 델타를 읽는 방법에는 두 가지가 있습니다: ` angleDelta()`는 휠 각도 단위의 델타를 반환합니다. 이 값들은 항상 제공됩니다. ` pixelDelta()는 화면 픽셀 단위의 델타를 반환하며, macOS와 같이 고해상도 트랙패드가 있는 플랫폼에서 사용할 수 있습니다. 이 경우, ` device()`->`type()`는 `QInputDevice::DeviceType::Touchpad`를 반환합니다.
position() 및 globalPosition() 함수는 이벤트 발생 시점의 마우스 커서 위치를 반환합니다.
휠 이벤트에는 수신자가 해당 이벤트를 수락할지 여부를 나타내는 특수한 수락 플래그가 포함되어 있습니다. 휠 이벤트를 처리하지 않을 경우 ignore()를 호출해야 하며, 이렇게 하면 해당 이벤트가 상위 위젯으로 전달됩니다.
QWidget::setEnabled() 함수를 사용하면 위젯에 대한 마우스 및 키보드 이벤트를 활성화하거나 비활성화할 수 있습니다.
이벤트 핸들러 QWidget::wheelEvent()는 휠 이벤트를 수신합니다.
QMouseEvent 및 QWidget::grabMouse()도 참조하십시오 .
속성 설명서
[read-only] angleDelta : QPoint
이 속성은 휠이 회전한 상대적 각도를 8분의 1도 단위로 저장합니다.
양수 값은 휠이 사용자로부터 멀어지는 방향으로 앞으로 회전했음을 나타내며, 음수 값은 휠이 사용자를 향해 뒤로 회전했음을 나타냅니다. ` angleDelta().y() `는 이전 이벤트 이후 일반 수직 마우스 휠이 회전된 각도를 제공합니다. ` angleDelta().x() `는 마우스에 가로 휠이 있는 경우, 가로 마우스 휠이 회전된 각도를 제공하며, 그렇지 않은 경우 값은 0으로 유지됩니다.
대부분의 마우스 유형은 15도 단위로 작동하며, 이 경우 델타 값은 120의 배수가 됩니다. 즉, 120 단위 * 1/8 = 15도입니다.
참고: 스크롤 phases 을 지원하는플랫폼에서는 스크롤이 시작되려는 시점(Qt::ScrollBegin)이나 끝난 시점(Qt::ScrollEnd)에 델타 값이 null일 수 있습니다.
액세스 함수:
| QPoint | angleDelta() const |
pixelDelta()도 참조하십시오 .
[read-only] device : const QPointingDevice*
이 속성은 휠 이벤트가 발생한 장치를 나타냅니다.
pointingDevice()도 참조하십시오 .
[read-only] inverted : bool
이 속성은 이벤트와 함께 전달되는 델타 값의 부호가 반전되었는지 여부와 관계없이 성립합니다.
일반적으로 수직 휠의 경우, 휠 상단이 조작하는 손에서 멀어지는 방향으로 회전하면 양의 델타 값을 가진 QWheelEvent 가 생성됩니다. 마찬가지로, 수평 휠의 경우 휠 상단이 왼쪽으로 이동하면 양의 델타 값을 가진 QWheelEvent 가 생성됩니다.
그러나 일부 플랫폼에서는 이 설정을 변경할 수 있어, 위에서 설명한 것과 동일한 조작이 음의 델타 값(단, 크기는 동일)을 생성하기도 합니다. inverted 속성을 사용하면 휠 이벤트 수신자는 시스템 설정과 관계없이 항상 휠의 방향을 따르도록 선택할 수 있지만, 이는 특정 위젯에 한해서만 적용됩니다.
참고: 많은 플랫폼에서는 이러한 정보를 제공하지 않습니다. 이러한 플랫폼에서 ` inverted `는 항상 `false`를 반환합니다.
액세스 함수:
| bool | inverted() const |
[read-only] phase : Qt::ScrollPhase
이 속성은 해당 휠 이벤트의 스크롤 단계를 나타냅니다.
참고: ‘ Qt::ScrollBegin ’ 및 ‘ Qt::ScrollEnd ’단계는 현재 macOS에서만 지원됩니다.
액세스 함수:
| Qt::ScrollPhase | phase() const |
[read-only] pixelDelta : QPoint
이 속성은 화면상의 스크롤 거리를 픽셀 단위로 저장합니다.
이 값은 macOS와 같이 고해상도 픽셀 기반 델타 값을 지원하는 플랫폼에서 제공됩니다. 이 값은 화면상의 콘텐츠를 스크롤하는 데 직접 사용해야 합니다.
참고: 스크롤링 phases 을 지원하는플랫폼에서는 , 스크롤링이 시작되기 직전(Qt::ScrollBegin)이거나 끝난 후(Qt::ScrollEnd)일 때 델타 값이 null일 수 있습니다.
참고: X11에서는 이 값이 드라이버에 따라 달라져 신뢰할 수 없으므로, 대신 angleDelta()을 사용하십시오.
액세스 함수:
| QPoint | pixelDelta() const |
angleDelta()도 참조하십시오 .
멤버 함수 설명서
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())
휠 이벤트 객체를 생성합니다.
pos 는 창 내 마우스 커서의 위치를 제공합니다. 전역 좌표계의 위치는 globalPos 로 지정됩니다.
pixelDelta 는 화면상의 스크롤 거리를 픽셀 단위로 포함하며, angleDelta 는 휠 회전 각도를 포함합니다. pixelDelta 는 선택 사항이며 null일 수 있습니다.
이벤트 발생 시점의 마우스 및 키보드 상태는 buttons 와 modifiers 로 지정됩니다.
이벤트의 스크롤 단계는 phase 로 지정되며, source 는 이 이벤트가 실제 이벤트인지, 아니면 인공(합성) 이벤트인지를 나타냅니다.
시스템이 이벤트와 함께 전달되는 델타 값을 반전하도록 구성되어 있는 경우(예: macOS에서 터치패드의 자연스러운 스크롤링), inverted 는 true 이어야 합니다. 그렇지 않은 경우, inverted 는 false
휠 이벤트가 발생한 장치는 device 로 지정됩니다.
position(), globalPosition(), angleDelta(), pixelDelta(), phase(), inverted() 및 device()도 참조하십시오 .
[protected delete] QWheelEvent::QWheelEvent(QWheelEvent &&)
QWheelEvent 의 인스턴스를 move-construct로 생성합니다. 이 함수는 삭제되었습니다.
QPoint QWheelEvent::angleDelta() const
휠이 회전된 상대적 각도를 8분의 1도 단위로 반환합니다. 양수 값은 휠이 사용자로부터 멀어지는 방향으로 앞으로 회전했음을 나타내고, 음수 값은 휠이 사용자를 향해 뒤로 회전했음을 나타냅니다. ` angleDelta().y() `는 이전 이벤트 이후 일반적인 수직 마우스 휠이 회전된 각도를 제공하며, ` angleDelta().x() `는 마우스에 수평 휠이 있는 경우 수평 마우스 휠이 회전된 각도를 제공합니다. 그렇지 않은 경우 값은 0으로 유지됩니다. 일부 마우스는 휠을 기울여 가로 스크롤을 수행할 수 있게 하며, 일부 터치패드는 가로 스크롤 제스처를 지원합니다. 이러한 동작도 angleDelta().x() 에 표시됩니다.
대부분의 마우스 유형은 15도 단위로 작동하며, 이 경우 델타 값은 120의 배수가 됩니다. 즉, 120 단위 * 1/8 = 15도입니다.
그러나 일부 마우스는 더 정밀한 해상도의 휠을 갖추고 있어 120 단위(15도 미만)보다 작은 델타 값을 전송하기도 합니다. 이러한 경우를 지원하기 위해, 120에 도달할 때까지 이벤트의 델타 값을 누적하여 더한 후 위젯을 스크롤하거나, 각 휠 이벤트에 반응하여 위젯을 부분적으로 스크롤할 수 있습니다. 하지만 더 자연스러운 사용감을 제공하려면, 해당 기능이 지원되는 플랫폼에서는 pixelDelta()를 사용하는 것이 좋습니다.
예시:
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();
}참고: phases 스크롤링을 지원하는플랫폼에서 다음과 같은 경우 델타 값이 null일 수 있습니다:
- 스크롤이 시작되려 하지만 이동 거리가 아직 변경되지 않은 경우 (Qt::ScrollBegin),
- 또는 스크롤이 종료되었고 이동 거리가 더 이상 변경되지 않은 경우 (Qt::ScrollEnd).
참고: angleDelta 속성의게터 함수입니다.
pixelDelta()도 참조하십시오 .
bool QWheelEvent::inverted() const
이벤트와 함께 전달된 델타 값이 반전되었는지 여부를 반환합니다.
일반적으로 수직 휠의 경우, 휠 상단이 조작하는 손에서 멀어지는 방향으로 회전하면 양의 델타 값을 가진 QWheelEvent 가 생성됩니다. 마찬가지로, 수평 휠의 경우 휠 상단이 왼쪽으로 이동하면 양의 델타 값을 가진 QWheelEvent 가 생성됩니다.
그러나 일부 플랫폼에서는 이 설정을 변경할 수 있어, 위에서 설명한 것과 동일한 조작이 음의 델타 값(하지만 크기는 동일)을 생성하기도 합니다. inverted 속성을 사용하면 휠 이벤트 처리자는 시스템 설정과 관계없이 항상 휠의 방향을 따르도록 선택할 수 있지만, 이는 특정 위젯에 대해서만 적용됩니다. (이러한 사용 사례 중 하나는 사용자가 시각적인 텀블러가 회전하는 방향과 동일한 방향으로 휠을 회전시키는 경우일 수 있습니다. 또 다른 사용 사례는 시스템 구성과 관계없이 슬라이더 핸들이 터치패드에서 손가락이 움직이는 방향을 따르도록 하는 것입니다.)
참고: 많은 플랫폼에서는 이러한 정보를 제공하지 않습니다. 이러한 플랫폼에서는 inverted가 항상 false를 반환합니다.
참고: inverted 속성에 대한게터 함수입니다.
[override virtual] bool QWheelEvent::isBeginEvent() const
QSinglePointEvent::isBeginEvent() const를 재구현합니다.
이 이벤트의 ` phase()`가 ` Qt::ScrollBegin`인 경우 ` true `를 반환합니다.
[override virtual] bool QWheelEvent::isEndEvent() const
QSinglePointEvent::isEndEvent() const를 재구현합니다.
이 이벤트의 ` phase()`가 ` Qt::ScrollEnd`인 경우 ` true `를 반환합니다.
[override virtual] bool QWheelEvent::isUpdateEvent() const
QSinglePointEvent::isUpdateEvent() const를 재구현합니다.
이 이벤트의 ` phase()`가 ` Qt::ScrollUpdate ` 또는 ` Qt::ScrollMomentum`인 경우 ` true `를 반환합니다.
Qt::ScrollPhase QWheelEvent::phase() const
이 휠 이벤트의 스크롤 단계를 반환합니다.
참고: ' Qt::ScrollBegin ' 및 ' Qt::ScrollEnd '단계는 현재 macOS에서만 지원됩니다.
참고: phase 속성에 대한게터 함수입니다.
QPoint QWheelEvent::pixelDelta() const
화면상의 스크롤 거리를 픽셀 단위로 반환합니다. 이 값은 macOS와 같이 고해상도 픽셀 기반 델타 값을 지원하는 플랫폼에서 제공됩니다. 이 값을 직접 사용하여 화면상의 콘텐츠를 스크롤해야 합니다.
예시:
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();
}참고: 스크롤링 phases 을 지원하는 플랫폼에서 다음의 경우 델타 값이 null일 수 있습니다:
- 스크롤이 시작되려 하지만 거리가 아직 변경되지 않은 경우(Qt::ScrollBegin),
- 또는 스크롤이 종료되었고 거리가 더 이상 변경되지 않은 경우(Qt::ScrollEnd).
참고: X11에서는 이 값이 드라이버에 따라 다르며 신뢰할 수 없으므로, 대신 ` angleDelta()`를 사용하십시오.
참고: pixelDelta 속성에 대한게터 함수입니다.
[protected delete] QWheelEvent &QWheelEvent::operator=(QWheelEvent &&)
other 를 이 QWheelEvent 인스턴스에 이동-할당합니다. 이 함수는 삭제됩니다.
[noexcept protected default] QWheelEvent &QWheelEvent::operator=(const QWheelEvent &other)
other 를 이 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.