이 페이지에서

마우스 이벤트

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

마우스 유형

마우스 이벤트 처리

QML은 신호와 핸들러를 사용하여 마우스 상호 작용을 전달합니다. 구체적으로, Qt Quick 는 MouseArea 및 MouseEvent 유형을 제공하며, 이를 통해 개발자는 정의된 영역 내에서 마우스 이벤트를 수신하는 JavaScript 콜백(신호 핸들러라고도 함)을 정의할 수 있습니다.

마우스 영역 정의

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 유형 문서를 통해 이러한 제스처에 대해 더 자세히 확인할 수 있습니다:

  • 취소됨
  • clicked
  • doubleClicked
  • entered
  • exited
  • 위치 변경됨
  • 누르고 있음
  • 누름
  • 해제됨

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

    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")
    }

제스처 활성화

일부 마우스 제스처와 버튼 클릭은 이벤트를 보내거나 수신하기 전에 활성화해야 합니다. 특정 MouseArea 및 MouseEvent 속성을 통해 이러한 제스처를 활성화할 수 있습니다.

특정 마우스 버튼을 감지(또는 명시적으로 무시)하려면 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 객체

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

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

추가 신호 수신

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

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

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