GUI 상호 작용을위한 수정 자로 누를 수있는 화면 제어 단추를 구현하려고합니다.MultiPointTouchArea에서 기본 PinchArea steals 이벤트
MouseArea
은 하나의 마우스 영역에서 하나의 터치 포인트 만 처리 할 수 있기 때문에 가능하지 않습니다.
해당 제한 사항은 MultiPointTouchArea
에는 적용되지 않습니다. 이러한 제한 사항은 여러 개가 있고 동시에 상호 작용할 수 있습니다.
내 경우에는 Flickable
상단에 PinchArea
의 상단에 MultiPointTouchArea
을 통해 구현되는 제어 버튼이 있습니다. 후자는 Flickable
을 통해 구현 된보기의 크기를 조정하는 데 사용됩니다.
그러나 컨트롤 버튼을 누르면 플리커 블과 상호 작용할 수 없으며 버튼을 눌러 핀치 동작을 시작하는 동안 손가락 하나를 놓을 수 있습니다. 이것은 이상합니다. 예상되는 것은 핀치가 영역 내에 두 개의 터치 포인트가있을 때만 시작된다는 것입니다. 어떤 이유로 초기에 터치가 버튼의 이벤트로 등록되었지만 핀치 영역에서 한 터치 포인트가 활성화되는 순간, 버튼 터치 포인트가 핀치 영역에있는 것으로 계산됩니다.
플리커 블 영역 또는 핀치 영역이 없으면 이러한 상황이 발생하지 않으며 두 구성 모두 해당 구성에 있어야합니다. 가볍게 치거나 단지 핀치 영역이면 오버레이 버튼이 예상대로 작동합니다. 또한 단추가 핀치 영역 앞에있는 경우에도 문제가 발생합니다. 버튼을 해제 할 때
이import QtQuick 2.7
import QtQuick.Window 2.2
Window {
id: main
visible: true
width: 1920
height: 1080
PinchArea {
anchors.fill: parent
onPinchUpdated: tt.text = pinch.scale
pinch.target: rect
Flickable {
contentWidth: 2000
contentHeight: 2000
anchors.fill: parent
Rectangle {
id: rect
width: 200
height: 200
color: "green"
x: 500
y: 300
}
}
}
Text {
anchors.centerIn: parent
id: tt
}
Rectangle {
width: 200
height: 200
anchors.verticalCenter: parent.verticalCenter
color: "blue"
MultiPointTouchArea {
anchors.fill: parent
minimumTouchPoints: 1
maximumTouchPoints: 1
onPressed: parent.color = "red"
onReleased: parent.color = "blue"
}
}
}
공지 사항 버튼을 누르고있는 동안 당신이 flickable 한 터치하면 핀치 지역이 트리거됩니다 것을, 그 색상이 변경되지 않습니다
다음은 문제를 재생 코드 즉 방출 된 신호가 방출되지 않으면, 핀치 영역에 의해 이벤트가 효과적으로 도난 당했고, 후자는 뒤쳐져 간섭을 일으키지 않았습니다. 아아,이 시나리오에는 preventStealing
옵션이 없습니다.
이 시점에서이 모양은 yet another Qt bug이지만이 문제를 해결하는 방법에 대한 제안은 많은 도움이 될 것입니다.