WheelHandler QML Type
마우스 휠용 핸들러입니다. 더 보기...
Import Statement: | import QtQuick |
Inherits: |
속성
- acceptedDevices : flags
- acceptedModifiers : flags
- active : bool
- activeTimeout : real
- blocking : bool
(since 6.3)
- enabled : bool
- invertible : bool
- margin : real
- orientation : enumeration
- parent : Item
- point : handlerPoint
- property : string
- rotation : real
- rotationScale : real
- target : Item
- targetScaleMultiplier : real
- targetTransformAroundCursor : bool
신호
- wheel(WheelEvent event)
상세 설명
휠 핸들러는 사용자가 마우스 휠을 회전할 때 아이템의 일부 숫자 속성을 대화형으로 조작하는 데 사용되는 핸들러입니다. 다른 입력 핸들러와 마찬가지로 기본적으로 target 을 조작합니다. property 를 선언하여 조작할 대상 프로퍼티를 제어할 수 있습니다:
import QtQuick Rectangle { width: 170; height: 120 color: "green"; antialiasing: true WheelHandler { property: "rotation" onWheel: (event)=> console.log("rotation", event.angleDelta.y, "scaled", rotation, "@", point.position, "=>", parent.rotation) } }
BoundaryRule 는 휠 핸들러와 함께(다른 입력 핸들러와 함께) 대상 프로퍼티가 가질 수 있는 값의 허용 범위를 선언하는 데 매우 유용합니다. 예를 들어 사용자가 휠을 회전하거나 터치스크린에서 항목을 드래그할 때 스크롤 가능한 항목의 y 속성을 조작하기 위해 휠 핸들러와 DragHandler, 그리고 위에서 아래로 이동 범위를 제한하기 위해 BoundaryRule 을 조합하여 스크롤을 구현할 수 있습니다:
import QtQuick import Qt.labs.animation Item { width: 320; height: 480 Flow { id: content width: parent.width spacing: 2; padding: 2 WheelHandler { orientation: Qt.Vertical property: "y" rotationScale: 15 acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad onActiveChanged: if (!active) ybr.returnToBounds() } DragHandler { xAxis.enabled: false onActiveChanged: if (!active) ybr.returnToBounds() } BoundaryRule on y { id: ybr minimum: content.parent.height - content.height maximum: 0 minimumOvershoot: 400; maximumOvershoot: 400 overshootFilter: BoundaryRule.Peak } Repeater { model: 1000 Rectangle { color: "gray"; width: 10 + Math.random() * 100; height: 15 } } } }
또는 property 가 설정되지 않았거나 대상이 null인 경우 WheelHandler는 자동으로 아무것도 조작하지 않지만 rotation 속성을 바인딩에 사용하여 다른 속성을 조작하거나 onWheel
를 구현하여 휠 이벤트를 직접 처리할 수 있습니다.
휠 핸들러는 기본적으로 회전하는 마우스 휠만 처리하며, acceptedDevices 을 설정하여 변경할 수 있습니다.
MouseArea, Flickable, Qt Quick 예제 - 포인터 핸들러도참조하세요 .
속성 문서
acceptedDevices : flags |
이 핸들러를 활성화할 수 있는 포인팅 장치의 유형입니다.
기본적으로 이 프로퍼티는 실제 마우스 휠의 이벤트에만 반응하도록 PointerDevice.Mouse 로 설정되어 있습니다.
WheelHandler acceptedDevices 를 PointerDevice.Mouse | PointerDevice.TouchPad
로 설정하면 마우스 휠과 터치패드 스크롤에 모두 반응하도록 만들 수 있습니다.
참고: 일부 마우스 이외의 하드웨어(예: 터치에 민감한 Wacom 태블릿 또는 Linux 노트북 터치패드)는 제스처에서 실제 휠 이벤트를 생성합니다. acceptedDevices
이 기본값으로 설정되어 있어도 WheelHandler 은 이러한 이벤트에 휠 이벤트로 응답합니다.
acceptedModifiers : flags |
이 속성을 설정하면 휠 이벤트에 반응하기 위해 지정된 키보드 수정자를 눌러야 하며, 그렇지 않으면 무시합니다.
이 속성이 Qt.KeyboardModifierMask
(기본값)로 설정된 경우 WheelHandler 은 수정자 키를 무시합니다.
예를 들어 Item 핸들러에는 두 개의 핸들러가 있을 수 있는데, 그 중 하나는 필요한 키보드 수정자가 눌릴 때만 활성화되고 다른 하나는 수정자가 눌리지 않으면 이벤트를 무시합니다:
import QtQuick Rectangle { width: 170; height: 120 color: "green"; antialiasing: true WheelHandler { property: "rotation" acceptedModifiers: Qt.ControlModifier } WheelHandler { property: "scale" acceptedModifiers: Qt.NoModifier } }
사용 가능한 수정자는 다음과 같습니다:
상수 | 설명 |
---|---|
NoModifier | 수정자 키는 허용되지 않습니다. |
ShiftModifier | 키보드의 Shift 키를 눌러야 합니다. |
ControlModifier | 키보드의 Ctrl 키를 눌러야 합니다. |
AltModifier | 키보드의 Alt 키를 눌러야 합니다. |
MetaModifier | 키보드의 메타 키를 눌러야 합니다. |
KeypadModifier | 키패드 버튼을 눌러야 합니다. |
GroupSwitchModifier | X11 전용(Windows에서 명령줄 인수로 활성화하지 않은 경우). 키보드의 Mode_switch 키를 눌러야 합니다. |
KeyboardModifierMask | 핸들러는 어떤 수정자를 눌렀는지는 신경 쓰지 않습니다. |
Qt::KeyboardModifier 를참조하세요 .
active : bool |
WheelHandler 이 최근 QWheelEvent, 속성을 최신 상태로 유지하고 대상 (있는 경우)을 적극적으로 조작하고 있을 때마다 true
을 보유합니다.
activeTimeout도 참조하세요 .
activeTimeout : real |
더 이상 휠 이벤트가 수신되지 않으면 active 프로퍼티가 false
로 되돌아갈 시간(초)입니다. 기본값은 0.1
(100ms)입니다.
WheelHandler 이 scroll phase 정보가 포함된 이벤트를 처리하는 경우(예: 일부 터치패드의 이벤트), active 속성은 Qt::ScrollEnd 단계의 이벤트가 수신되는 즉시 false
이 되며, 이 경우 시간 초과가 필요하지 않습니다. 그러나 휠이 있는 일반 마우스는 스크롤 단계를 제공하지 않으므로 사용자가 스크롤을 중지하기로 결정한 시점을 마우스가 감지할 수 없으므로 이 정도의 시간이 경과한 후에 active 속성이 false
로 전환됩니다.
QWheelEvent::phase()도 참조하세요 .
blocking : bool |
이 핸들러가 그 뒤에 있는 다른 항목이나 핸들러가 동일한 휠 이벤트를 처리하지 못하도록 할지 여부입니다. 이 속성은 기본적으로 true
입니다.
이 프로퍼티는 Qt 6.3에 도입되었습니다.
enabled : bool |
PointerHandler 을 비활성화하면 모든 이벤트를 거부하고 어떠한 신호도 방출하지 않습니다.
invertible : bool |
QWheelEvent::inverted 이 true
인 경우 속성 변경 방향을 반전시킬지 여부. 기본값은 true
입니다.
운영 체제에 손가락의 움직임과 같은 방향으로 스크롤되도록 하는 '자연스러운 스크롤' 설정이 있는 경우 이 속성이 true
로 설정되어 있고 WheelHandler 이 대상에 직접 속성을 설정하는 경우 이동 방향이 시스템 설정과 일치합니다. 이 속성이 false
로 설정된 경우 rotation 을 반전시켜 이동 방향이 항상 손가락 이동 방향과 동일하도록 합니다.
margin : real |
WheelHandler 이 반응할 수 있는 parent 항목의 경계를 벗어나는 여백입니다. 예를 들어 margin
이 10
으로 설정된 경우 커서를 항목의 보이는 가장자리 바깥쪽 10픽셀까지 배치해도 휠에 반응할 수 있습니다:
import QtQuick Rectangle { width: 170; height: 120 color: "green"; antialiasing: true WheelHandler { property: "rotation" margin: 10 } }
기본값은 0
입니다.
orientation : enumeration |
반응할 휠. 기본값은 Qt.Vertical
입니다.
모든 마우스에 Horizontal
휠이 있는 것은 아니며, 휠을 옆으로 기울여 에뮬레이션하는 경우도 있습니다. 터치패드는 일반적으로 수직 및 수평 휠 이벤트를 모두 생성할 수 있습니다.
parent : Item |
Item 는 핸들러의 범위이며, Item은 핸들러가 선언된 항목입니다. 핸들러는 이 아이템을 대신하여 이벤트를 처리하므로, 포인터 이벤트 중 하나 이상의 eventPoints 가 아이템 내부에서 발생하면 포인터 이벤트가 관련성이 있습니다. 처음에 target() 은 동일하지만 재할당할 수 있습니다.
target 및 QObject::parent()도 참조하세요 .
point : handlerPoint |
현재 처리 중인 eventPoint. 현재 처리 중인 점이 없는 경우 이 객체는 기본값으로 재설정됩니다(모든 좌표는 0).
property : string |
마우스 휠을 회전할 때 대상에서 수정할 속성입니다.
기본값은 속성 없음(빈 문자열)입니다. 자동으로 수정되는 대상 속성이 없는 경우 바인딩을 사용하여 마우스 휠 회전에 임의의 방식으로 반응할 수 있습니다.
마우스 휠을 사용하여 숫자 속성을 조정할 수 있습니다. 예를 들어 property
을 x
으로 설정하면 휠이 회전함에 따라 대상이 수평으로 이동합니다. 다음 속성에는 특별한 동작이 있습니다:
상수 | 설명 |
---|---|
scale | scale 는 targetScaleMultiplier 에 설명된 대로 비선형 방식으로 수정됩니다. targetTransformAroundCursor 이 true 인 경우 x 및 y 속성이 동시에 조정되어 사용자가 마우스 커서 아래의 지점을 효과적으로 확대 또는 축소할 수 있습니다. |
rotation | rotation 는 rotation 로 설정됩니다. targetTransformAroundCursor 이 true 인 경우 l{QQuickItem::x}{x} 및 y 속성이 동시에 조정되어 사용자가 마우스 커서 아래 지점을 중심으로 항목을 효과적으로 회전할 수 있습니다. |
지정된 대상 프로퍼티의 조정은 항상 rotationScale 에 의해 스케일링됩니다.
rotation : real |
이 속성을 마지막으로 설정한 이후 마우스 휠이 회전한 각도(휠도 단위)입니다.
양수 값은 휠이 위/오른쪽으로 회전했음을 나타내고 음수 값은 휠이 아래/왼쪽으로 회전했음을 나타냅니다.
기본 마우스 클릭 휠은 15도 단계로 작동합니다.
기본값은 시작 시 0
입니다. 언제든지 프로그래밍 방식으로 원하는 값으로 설정할 수 있습니다. 사용자가 마우스 휠을 돌리면 그 값은 거기에서 조정됩니다.
orientation 을참조하세요 .
rotationScale : real |
target : Item |
이 핸들러가 조작할 항목입니다.
기본적으로 핸들러가 선언된 Item은 parent 과 동일합니다. 그러나 한 항목 내에서 이벤트를 처리하지만 다른 항목을 조작하기 위해 대상을 다른 항목으로 설정하거나, 기본 동작을 비활성화하고 대신 다른 작업을 수행하려면 null
으로 설정하는 것이 유용할 수 있습니다.
targetScaleMultiplier : real |
rotation 이 15도 변경될 때마다 대상 scale 에 곱해야 하는 양입니다. 이는 property 이 "scale"
일 때만 해당됩니다.
scale
에 targetScaleMultiplier
각도 델타 * rotationScale / 15를 곱합니다. 기본값은 2
1/3이므로 rotationScale 을 기본값으로 두고 마우스 휠을 한 번 "클릭"(15도)하면 대상의 크기가 약 1.25로 조정되고, 세 번 "클릭"하면 휠이 회전하는 방향에 따라 크기가 두 배 또는 절반으로 조정됩니다. 휠을 두 번 클릭할 때마다 2배 또는 절반으로 만들려면 2
1/2 (1.4142)로 설정합니다. 휠이 회전하는 반대 방향으로 배율을 조정하려면 rotationScale
을 음수 값으로 설정합니다.
targetTransformAroundCursor : bool |
property 을 조정하는 동안 마우스 커서 위치를 중심으로 변형되는 방식으로 대상을 자동으로 재배치할지 여부입니다. 기본값은 true
입니다.
property 이 "rotation"
으로 설정되어 있고 targetTransformAroundCursor 가 true
인 경우 휠을 회전하면 대상 항목이 마우스 커서 위치를 중심으로 제자리에서 회전합니다. targetTransformAroundCursor
가 false
인 경우 대신 transformOrigin 를 중심으로 회전합니다.
신호 문서
wheel(WheelEvent event) |
이 신호는 이 핸들러가 QWheelEvent 유형의 event, 즉 휠이 움직이거나 스크롤 제스처가 업데이트될 때마다 발생합니다.
참고: 해당 핸들러는 onWheel
입니다.
© 2025 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.