마우스 이벤트

마우스와 터치스크린을 포함한 모든 포인팅 장치의 이벤트를 처리하는 보다 현대적인 방법은 입력 핸들러를 사용하는 것입니다. 이 페이지에서는 처음에는 마우스 입력을 처리하도록 설계된 원래 Qt Quick MouseArea 유형에 대해 설명하며, 이후 간단한 터치 중심의 사용자 인터페이스에서 단일 터치 이벤트(합성 마우스 이벤트의 형태)를 처리하기 시작했습니다.

마우스 유형

마우스 이벤트 처리

QML은 신호와 핸들러를 사용하여 마우스 상호작용을 전달합니다. 특히 Qt Quick 에서는 개발자가 정의된 영역 내에서 마우스 이벤트를 받아들이는 JavaScript 콜백(신호 핸들러라고도 함)을 정의할 수 있는 MouseAreaMouseEvent 타입을 제공합니다.

마우스 영역 정의하기

MouseArea 유형은 정의된 영역 내에서 이벤트를 수신합니다. 이 영역을 정의하는 한 가지 빠른 방법은 anchors.fill 속성을 사용하여 MouseArea 을 부모 영역에 앵커링하는 것입니다. 부모가 Rectangle (또는 Item 컴포넌트)인 경우 MouseArea 는 부모의 크기에 의해 정의된 영역을 채웁니다. 또는 부모보다 작거나 큰 영역을 정의할 수 있습니다.

Rectangle {
    id: button
    width: 100; height: 100

    MouseArea {
        anchors.fill: parent
        onClicked: console.log("button clicked")
    }
    MouseArea {
        width:150; height: 75
        onClicked: console.log("irregular area clicked")
    }
}

이벤트 수신

MouseArea 유형은 다양한 마우스 이벤트에 대한 응답으로 신호를 방출합니다. MouseArea 유형 문서에서 이러한 제스처에 대해 자세히 설명합니다:

  • 취소
  • 클릭
  • 더블 클릭
  • 입력
  • exited
  • 위치 변경
  • pressAndHold
  • 눌렀다
  • 릴리스

이러한 신호에는 신호가 방출될 때 호출되는 콜백이 있을 수 있습니다.

    MouseArea {
        anchors.fill: parent
        onClicked: console.log("area clicked")
        onDoubleClicked: console.log("area double clicked")
        onEntered: console.log("mouse entered the area")
        onExited: console.log("mouse left the area")
    }

제스처 활성화

일부 마우스 제스처와 버튼 클릭은 이벤트를 보내거나 받기 전에 활성화해야 합니다. 특정 MouseAreaMouseEvent 속성은 이러한 제스처를 활성화합니다.

특정 마우스 버튼을 수신(또는 명시적으로 무시)하려면 해당 마우스 버튼을 acceptedButtons 속성으로 설정합니다.

당연히 버튼 누름 및 마우스 위치와 같은 마우스 이벤트는 마우스 클릭 중에 전송됩니다. 예를 들어 containsMouse 속성은 마우스를 누르는 동안에만 올바른 값을 가져옵니다. hoverEnabled 속성은 마우스 버튼을 누르지 않을 때에도 마우스 이벤트와 마우스 위치를 활성화합니다. hoverEnabled 속성을 true 으로 설정하면 entered, exited, positionChanged 신호와 해당 신호 핸들러가 차례로 활성화됩니다.

    MouseArea {
        hoverEnabled: true
        acceptedButtons: Qt.LeftButton | Qt.RightButton
        onEntered: console.log("mouse entered the area")
        onExited: console.log("mouse left the area")
    }

또한 전체 마우스 영역을 비활성화하려면 MouseArea enabled 속성을 false 로 설정합니다.

마우스 이벤트 객체

신호와 해당 콜백은 MouseEvent 객체를 매개변수로 받습니다. mouse 객체에는 마우스 이벤트에 대한 정보가 들어 있습니다. 예를 들어 이벤트를 시작한 마우스 버튼은 mouse.button 속성을 통해 쿼리됩니다.

MouseEvent 객체는 accepted 속성을 사용하여 마우스 이벤트를 무시할 수도 있습니다.

추가 신호 수락

더블 클릭과 같은 다양한 마우스 이벤트를 반영하기 위해 많은 신호가 여러 번 전송됩니다. 마우스 클릭을 쉽게 분류할 수 있도록 MouseEvent 객체에는 이벤트 전파를 비활성화하는 accepted 속성이 있습니다.

QML의 이벤트 시스템에 대해 자세히 알아보려면 신호 및 핸들러, 이벤트 시스템 문서를 참조하세요.

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