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)
상세 설명
호버핸들러는 마우스 또는 태블릿 스타일러스 커서를 감지합니다.
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 | 키보드의 메타 키를 눌러야 합니다. |
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 |
이 입력 핸들러가 하나 이상의 eventPoints 을 전달할 때마다 해당 포인트를 독점적으로 잡는 데 성공하여 true
을 보유합니다. 즉, 해당 이벤트포인트의 움직임에 따라 프로퍼티를 최신 상태로 유지하고 target (있는 경우)를 적극적으로 조작한다는 의미입니다.
blocking : bool |
이 핸들러가 그 뒤에 있는 다른 항목이나 핸들러가 동시에 호버링되는 것을 방지하는지 여부. 이 속성은 기본적으로 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.SplitVCursor
- Qt.SplitHCursor
- Qt.PointingHandCursor
- Qt.ForbiddenCursor
- Qt.WhatsThisCursor
- Qt.BusyCursor
- Qt.OpenHandCursor
- Qt.ClosedHandCursor
- Qt.DragCopyCursor
- Qt.DragMoveCursor
- Qt.DragLinkCursor
이 프로퍼티의 기본값은 설정되어 있지 않으므로, 같은 부모 항목의 활성 핸들러가 커서 모양을 결정할 수 있습니다. 이 속성은 undefined
로 설정하여 초기 조건으로 재설정할 수 있습니다.
cursorShape
이 정의된 핸들러가 active 인 경우 해당 커서가 나타납니다. 그렇지 않고 HoverHandler 에 정의된 cursorShape
이 있으면 해당 커서가 표시됩니다. 그렇지 않으면 상위 항목의 cursor 이 표시됩니다.
참고: 이 속성이 설정되지 않았거나 undefined
로 설정된 경우 값을 읽으면 Qt.ArrowCursor
이 반환됩니다.
Qt::CursorShape 및 QQuickItem::cursor()도 참조하세요 .
enabled : bool |
PointerHandler 을 비활성화하면 모든 이벤트를 거부하고 신호를 보내지 않습니다.
grabPermissions : flags |
이 속성은 이 핸들러의 로직이 독점 그래브를 인수하기로 결정하거나 다른 핸들러가 그래브 인수 또는 취소를 승인하도록 요청할 때 사용 권한을 지정합니다.
Constant | 설명 |
---|---|
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
으로 대부분의 탈취 시나리오를 허용하지만 예를 들어 두 핀치 핸들러가 같은 터치포인트를 놓고 싸우는 것을 방지합니다.
hovered : bool |
포인팅 디바이스 커서(마우스 또는 태블릿)가 parent
아이템의 범위 내에 있을 때, margin 에 의해 확장된 경우 이 값을 유지합니다.
margin : real |
eventPoint 이 이 핸들러를 활성화할 수 있는 parent 항목의 경계를 벗어난 여백입니다. 예를 들어 target 이 parent
인 PinchHandler 에서 이 값을 일반적인 사용자 손가락 너비의 절반 이상으로 설정하면 parent
이 매우 작은 크기로 축소된 경우에도 핀치 제스처가 가능합니다. 또는 TapHandler 기반 버튼이 화면 가장자리 근처에 배치된 경우 피츠의 법칙에 따라 버튼이 시각적으로 가장자리에서 몇 픽셀 떨어져 있어도 화면 가장자리에서 마우스 클릭에 반응할 수 있습니다.
기본값은 0입니다.
parent : Item |
핸들러의 범위인 Item, 핸들러가 선언된 항목입니다. 핸들러는 이 아이템을 대신하여 이벤트를 처리하므로, eventPoints 중 하나 이상이 아이템 내부에서 발생하면 포인터 이벤트가 관련성이 있다는 뜻입니다. 처음에 target() 은 동일하지만 재할당할 수 있습니다.
target 및 QObject::parent()도 참조하세요 .
point : handlerPoint |
현재 처리 중인 eventPoint. 현재 처리 중인 점이 없으면 이 객체는 기본값으로 재설정됩니다(모든 좌표는 0).
target : Item |
이 핸들러가 조작할 항목입니다.
기본적으로 이 핸들러가 선언된 Item은 parent 과 동일합니다. 그러나 한 항목 내에서 이벤트를 처리하지만 다른 항목을 조작하기 위해 대상을 다른 항목으로 설정하거나, 기본 동작을 비활성화하고 대신 다른 작업을 수행하려면 null
로 설정하는 것이 유용할 수 있습니다.
신호 문서
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
입니다.
© 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.