HoverHandler QML Type
마우스 및 태블릿 호버 처리기. 더 보기...
| Import Statement: | import QtQuick |
| Inherits: |
속성
- acceptedDevices : flags
- acceptedModifiers : flags
- acceptedPointerTypes : flags
- active : bool
- blocking : bool
(since 6.3) - cursorShape : Qt::CursorShape
- enabled : bool
- grabPermissions : flags
- hovered : bool
- margin : real
- parent : Item
- point : handlerPoint
- target : Item
신호
- canceled(eventPoint point)
- grabChanged(PointerDevice::GrabTransition transition, eventPoint point)
상세 설명
HoverHandler는 마우스나 태블릿 스타일러스 커서가 호버 상태인지 감지합니다.
hovered 속성에 바인딩하는 것이 커서가 parent 항목에 진입하거나 이탈할 때 반응하는 가장 쉬운 방법입니다. point 속성은 커서 위치를 포함하여 더 자세한 정보를 제공합니다. acceptedDevices, acceptedPointerTypes 및 acceptedModifiers 속성을 사용하면 특정 종류의 장치에서 호버링이 발생하거나 수정 키를 누른 상태에서 호버링이 감지될 때만 동작이 적용되도록 범위를 좁힐 수 있습니다.
cursorShape 속성을 사용하면 hovered 가 true 로 변경될 때마다 커서 모양을 변경할 수 있습니다.
MouseArea, PointHandler 및 Qt Quick 예제 - 포인터 핸들러도참조하십시오 .
속성 설명서
acceptedDevices : flags
포인터 핸들러를 활성화할 수 있는 포인팅 장치의 유형입니다.
기본적으로 이 속성은 ` PointerDevice.AllDevices`로 설정되어 있습니다. 장치 유형을 OR 연산으로 조합하여 설정하면, 일치하지 않는 장치에서 발생하는 포인터 이벤트는 무시됩니다.
예를 들어, 두 개의 핸들러를 사용하여 항목이 마우스 호버에는 한 가지 방식으로, 스타일러스 호버에는 다른 방식으로 반응하도록 만들 수 있습니다:
import QtQuick
Rectangle {
width: 150; height: 50; radius: 3
color: mouse.hovered ? "goldenrod" : stylus.hovered ? "tomato" : "wheat"
HoverHandler {
id: stylus
acceptedDevices: PointerDevice.Stylus
cursorShape: Qt.CrossCursor
}
HoverHandler {
id: mouse
acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
cursorShape: Qt.PointingHandCursor
}
}사용 가능한 장치 유형은 다음과 같습니다:
| 상수 | 설명 |
|---|---|
PointerDevice.Mouse | 마우스. |
PointerDevice.TouchScreen | 터치스크린. |
PointerDevice.TouchPad | 터치패드 또는 트랙패드. |
PointerDevice.Stylus | 그래픽 태블릿의 스타일러스. |
PointerDevice.Airbrush | 그래픽 태블릿의 에어브러시. |
PointerDevice.Puck | 그래픽 태블릿에 있는 십자선이 표시되는 디지타이저. |
PointerDevice.AllDevices | 모든 종류의 포인팅 장치. 참고: 아직 모든 플랫폼이 마우스와 터치패드를 구분할 수 있는것은 아니며 , 구분할 수 있는 플랫폼에서도 마우스와 터치패드의 동작을 동일하게 설정하고 싶은 경우가 많습니다. |
QInputDevice::DeviceType도 참조하십시오 .
acceptedModifiers : flags
이 속성이 설정된 경우, 지정된 키보드 수정 키가 눌려진 경우에만 호버 이벤트가 처리됩니다. 수정 키가 눌리지 않은 상태에서는 이벤트가 무시됩니다.
이 속성은 기본적으로 ` Qt.KeyboardModifierMask `로 설정되어 있어, 수정 키 여부와 관계없이 호버 이벤트가 처리됩니다.
예를 들어, ` Item `에는 동일한 유형의 핸들러가 두 개 있을 수 있으며, 그중 하나는 필요한 키보드 수정 키가 눌린 경우에만 활성화됩니다.
import QtQuick
Rectangle {
width: 150; height: 50; radius: 3
color: control.hovered ? "goldenrod" : shift.hovered ? "wheat" : "beige"
HoverHandler {
id: control
acceptedModifiers: Qt.ControlModifier
cursorShape: Qt.PointingHandCursor
}
HoverHandler {
id: shift
acceptedModifiers: Qt.ShiftModifier
cursorShape: Qt.CrossCursor
}
}사용 가능한 수정 키는 다음과 같습니다:
| 상수 | 설명 |
|---|---|
Qt.NoModifier | 모디파이어 키를 사용할 수 없습니다. |
Qt.ShiftModifier | 키보드의 Shift 키를 눌러야 합니다. |
Qt.ControlModifier | 키보드의 Ctrl 키를 눌러야 합니다. |
Qt.AltModifier | 키보드의 Alt 키를 눌러야 합니다. |
Qt.MetaModifier | 키보드의 Meta 키를 눌러야 합니다. |
Qt.KeypadModifier | 키패드 버튼을 눌러야 합니다. |
Qt.GroupSwitchModifier | 키보드의 Mode_switch 키를 눌러야 합니다. X11 전용 (Windows에서 명령줄 인자로 활성화된 경우는 제외). |
Qt.KeyboardModifierMask | 핸들러는 수정 키를 무시합니다. |
Qt::KeyboardModifier도 참조하십시오 .
acceptedPointerTypes : flags
포인터 핸들러를 활성화할 수 있는 포인팅 장치 유형(일반, 스타일러스, 지우개 등).
기본적으로 이 속성은 ` PointerDevice.AllPointerTypes`로 설정되어 있습니다. 장치 유형을 OR 연산으로 조합하여 설정하면, 일치하지 않는 장치에서 발생하는 이벤트는 무시됩니다.
예를 들어, 그래픽 태블릿 위에 스타일러스가 떠 있는지 지우개가 떠 있는지에 따라 커서를 변경하여 피드백을 제공할 수 있습니다:
import QtQuick
Rectangle {
id: rect
width: 150; height: 150
HoverHandler {
id: stylus
acceptedPointerTypes: PointerDevice.Pen
cursorShape: Qt.CrossCursor
}
HoverHandler {
id: eraser
acceptedPointerTypes: PointerDevice.Eraser
cursorShape: Qt.BlankCursor
target: Image {
parent: rect
source: "images/cursor-eraser.png"
visible: eraser.hovered
x: eraser.point.position.x
y: eraser.point.position.y - 32
}
}
}사용 가능한 포인터 유형은 다음과 같습니다:
| 상수 | 설명 |
|---|---|
PointerDevice.Generic | 마우스 또는 마우스를 에뮬레이트하는 장치. |
PointerDevice.Finger | 터치스크린 위의 손가락(호버 감지는 거의 불가능함). |
PointerDevice.Pen | 그래픽 태블릿의 스타일러스. |
PointerDevice.Eraser | 그래픽 태블릿의 지우개. |
PointerDevice.Cursor | 그래픽 태블릿의 십자선이 표시되는 디지타이저. |
PointerDevice.AllPointerTypes | 모든 종류의 포인팅 장치. |
QPointingDevice::PointerType도 참조하십시오 .
active : bool [read-only]
이 메서드는 해당 입력 핸들러가 하나 이상의 ` eventPoints`에 대한 배타적 그랩을 성공적으로 수행하여 해당 이벤트 포인트들을 처리할 전적인 책임을 맡게 될 때마다 ` true `를 반환합니다. 즉, 해당 이벤트 포인트들의 움직임에 따라 속성을 최신 상태로 유지하고, ` target `(있는 경우)를 능동적으로 조작하고 있음을 의미합니다.
blocking : bool [since 6.3]
이 핸들러가 그 뒤에 있는 다른 항목이나 핸들러에 동시에 마우스를 올리는 것을 차단하는지 여부입니다. 이 속성의 기본값은 ‘ false ’입니다.
이 속성은 Qt 6.3에서 도입되었습니다.
cursorShape : Qt::CursorShape
이 속성은 ` hovered `가 ` true ` 상태일 때, 다른 핸들러가 이를 재정의하지 않는 한 표시될 커서 모양을 지정합니다.
사용 가능한 커서 모양은 다음과 같습니다:
- Qt.ArrowCursor
- Qt.UpArrowCursor
- Qt.CrossCursor
- Qt.WaitCursor
- Qt.IBeamCursor
- Qt.SizeVerCursor
- Qt.SizeHorCursor
- Qt.SizeBDiagCursor
- Qt.SizeFDiagCursor
- Qt.SizeAllCursor
- Qt.BlankCursor
- Qt.SplitV커서
- Qt.SplitHCursor
- Qt.손가락커서
- Qt.금지 커서
- Qt.이건뭐지_커서
- Qt.바쁜 커서
- Qt.열린손 커서
- Qt.주먹 커서
- Qt.드래그복사커서
- Qt.DragMoveCursor
- Qt.DragLinkCursor
이 속성의 기본값은 설정되어 있지 않으므로, 동일한 상위 항목에 활성화된 핸들러가 커서 모양을 결정할 수 있습니다. 이 속성은 undefined 로 설정하여 초기 상태로 재설정할 수 있습니다.
cursorShape 가 정의된 핸들러 중 active 인 것이 있으면 해당 커서가 표시됩니다. 그렇지 않은 경우, HoverHandler 에 cursorShape 가 정의되어 있으면 해당 커서가 표시됩니다. 그 외의 경우에는 부모 항목의 cursor 가 표시됩니다.
참고: 이 속성이 설정되지 않았거나 undefined 로 설정된경우 , 값을 읽으면 Qt.ArrowCursor 가 반환됩니다.
관련 항목: Qt::CursorShape 및 QQuickItem::cursor().
enabled : bool
HoverHandler 가 비활성화된 경우, 모든 이벤트를 거부하며 신호가 발신되지 않습니다.
HoverHandler 의 ' parent ' 속성이 ' disabled'로 설정된 경우, HoverHandler 는 기본적으로 호버 이벤트에 계속 반응합니다. 이는 컨트롤이 비활성화된 상태에서도 호버 피드백 효과와 툴팁이 유용할 수 있기 때문입니다. 부모 컨트롤이 비활성화되었을 때 HoverHandler 를 비활성화하려면 다음 바인딩을 추가할 수 있습니다:
Item {
HoverHandler {
enabled: parent.enabled
}
}grabPermissions : flags
이 속성은 이 핸들러의 로직이 배타적 그랩을 인수하기로 결정하거나, 다른 핸들러로부터 그랩 인수 또는 취소를 승인해 달라는 요청을 받았을 때의 권한을 지정합니다.
| 상수 | 설명 |
|---|---|
PointerHandler.TakeOverForbidden | 이 핸들러는 어떤 유형의 아이템이나 핸들러로부터도 그랩 권한을 가져오거나 부여하지 않습니다. |
PointerHandler.CanTakeOverFromHandlersOfSameType | 이 핸들러는 동일한 클래스의 다른 핸들러로부터 배타적 그랩을 인수할 수 있습니다. |
PointerHandler.CanTakeOverFromHandlersOfDifferentType | 이 핸들러는 어떤 종류의 핸들러로부터든 배타적 그랩을 가져올 수 있습니다. |
PointerHandler.CanTakeOverFromItems | 이 핸들러는 모든 유형의 아이템으로부터 배타적 그랩을 가져올 수 있습니다. |
PointerHandler.CanTakeOverFromAnything | 이 핸들러는 어떤 유형의 아이템이나 핸들러로부터도 배타적 그랩을 가져올 수 있습니다. |
PointerHandler.ApprovesTakeOverByHandlersOfSameType | 이 핸들러는 같은 클래스의 다른 핸들러가 그랩을 가져갈 수 있도록 권한을 부여합니다. |
PointerHandler.ApprovesTakeOverByHandlersOfDifferentType | 이 핸들러는 모든 종류의 핸들러가 그랩을 가져갈 수 있도록 허용합니다. |
PointerHandler.ApprovesTakeOverByItems | 이 핸들러는 모든 종류의 아이템이 그랩을 가져갈 수 있도록 허용합니다. |
PointerHandler.ApprovesCancellation | 이 핸들러는 자신의 그랩이 null로 설정되는 것을 허용합니다. |
PointerHandler.ApprovesTakeOverByAnything | 이 핸들러는 모든 유형의 아이템이나 핸들러가 그랩을 가져갈 수 있도록 허용합니다. |
기본값은 ` PointerHandler.CanTakeOverFromItems | PointerHandler.CanTakeOverFromHandlersOfDifferentType | PointerHandler.ApprovesTakeOverByAnything `이며, 이는 대부분의 인수 시나리오를 허용하되, 예를 들어 두 개의 `PinchHandler`가 동일한 터치 포인트를 놓고 경쟁하는 상황을 방지합니다.
hovered : bool [read-only]
parent 항목의 경계 내에 (마우스나 태블릿 등) 어떤 포인팅 장치 커서가 위치해 있을 때, 해당 경계가 margin 에 의해 확장된 경우(해당하는 경우)에도 이 규칙이 적용됩니다.
margin : real
parent 항목의 경계를 벗어난 여백으로, 이 범위 내에서 eventPoint 가 이 핸들러를 활성화할 수 있습니다. 예를 들어, target 가 parent 이기도 한 PinchHandler 의 경우, 이 값을 일반 사용자의 손가락 너비의 절반 이상으로 설정하는 것이 유용합니다. 이렇게 하면 parent 가 매우 작은 크기로 축소된 경우에도 핀치 제스처를 계속 사용할 수 있습니다. 또는, 화면 가장자리 근처에 TapHandler 기반 버튼을 배치한 경우, 이 버튼을 사용하여 피츠의 법칙(Fitts’ Law)을 준수할 수 있습니다. 즉, 버튼이 시각적으로 화면 가장자리에서 몇 픽셀 떨어져 있어도 화면 가장자리에서의 마우스 클릭에 반응하도록 할 수 있습니다.
기본값은 0입니다.

parent : Item
Item 는 핸들러의 적용 범위이며, 이 핸들러가 선언된 Item입니다. 핸들러는 이 Item을 대신하여 이벤트를 처리하며, 이는 포인터 이벤트의 eventPoints 중 적어도 하나가 Item의 내부에서 발생하는 경우 해당 이벤트가 관련이 있음을 의미합니다. 초기에는 target() 가 동일하지만, 재할당될 수 있습니다.
target 및 QObject::parent()도 참조하십시오 .
point : handlerPoint [read-only]
현재 처리 중인 eventPoint 입니다. 처리 중인 점이 없을 경우, 이 객체는 기본값(모든 좌표가 0)으로 재설정됩니다.
target : Item
이 핸들러가 조작할 항목입니다.
기본적으로 이는 ` parent`, 즉 핸들러가 선언된 `Item`과 동일합니다. 하지만 한 `Item` 내에서 이벤트를 처리하면서도 다른 `Item`을 조작하거나, ` null`을 통해 기본 동작을 비활성화하고 대신 다른 작업을 수행하기 위해 대상 `Item`을 다른 `Item`으로 설정하는 것이 유용한 경우도 있습니다.
Signal 문서
canceled(eventPoint point)
이 핸들러가 이미 주어진 point 을 확보한 상태라면, 다른 포인터 핸들러나 아이템이 이를 빼앗을 때 이 신호가 발생합니다.
참고: 해당 핸들러는 onCanceled 입니다.
grabChanged(PointerDevice::GrabTransition transition, eventPoint point)
이 핸들러와 관련된 방식으로 그랩에 변화가 발생하면 이 신호가 전송됩니다.
transition (동사)는 어떤 일이 발생했는지를 나타냅니다. point (목적어)는 그랩되거나 그랩이 해제된 지점을 나타냅니다.
transition 의 유효한 값은 다음과 같습니다.
| 상수 | 설명 |
|---|---|
PointerDevice.GrabExclusive | 이 핸들러는 ` point`을 처리하는 주된 책임을 맡았습니다. |
PointerDevice.UngrabExclusive | 이 핸들러는 이전의 배타적 확보를 포기했습니다. |
PointerDevice.CancelGrabExclusive | 이 핸들러의 배타적 확보가 인수되거나 취소되었습니다. |
PointerDevice.GrabPassive | 이 핸들러는 point 를 모니터링하기 위해 수동 그랩을 획득했습니다. |
PointerDevice.UngrabPassive | 이 핸들러는 이전의 수동 그랩을 해제했습니다. |
PointerDevice.CancelGrabPassive | 이 핸들러의 이전 수동 그랩이 비정상적으로 종료되었습니다. |
참고: 해당 핸들러는 onGrabChanged 입니다.
© 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.