2014-12-12 2 views
2

Windows 7 용 Qt/QML 응용 프로그램을 개발 중입니다. 최종 사용자 장치에는 Windows 7의 기본 터치 동작이 있습니다. 즉, 화면을 터치하면 마지막으로 터치 한 점에 점이 나타나고 실제 터치가 끝나면 Windows는 해당 점을 현재 터치 포인트에 놓고 실행합니다 on-clicked-event에서.Qt/QML 응용 프로그램이 포함 된 Windows 7의 사용자 정의 터치 동작

표준 Windows 마우스 사용에서 알 수있는 동작과 비교하면 예를 들어서와 같이 다른 동작이 발생합니다. 일부 버튼 클릭 : 마우스 버튼을 누르면 마우스 버튼이 눌려진 색상으로 바뀌고 마우스 버튼을 누르면 기본 색상으로 바뀝니다.

내 응용 프로그램에서는 터치 피드백의 사용자 정의 방식을 원합니다 : 현재 터치되는 것은 실제 물리적 터치가 시작될 때 "마우스가 내려감"을 모방하면서 버튼의 변경된 색상을 사용하여 표시되어야하고 " 실제의 신체적 접촉이 끝나면 마우스가 올라갑니다.

내 응용 프로그램이 전체 화면으로 실행되므로 응용 프로그램 시작시 시스템의 동작을 변경하고 응용 프로그램이 끝날 때 기본 동작으로 되돌릴 수 있습니다.

이러한 동작은 예를 들어, 다음과 같은 표준 동작과 실질적으로 동일합니다. 내가 아는 모든 Android 기기.

모든 MouseArea 및 MultiPointTouchArea 요소를 검색하여 클릭 반응 동작을 표준 동작과 다르게 만드는 방법을 찾으려고 시도했습니다. 그러나 나는 실제 감각의 시작을 포착 할 수있는 방법을 찾지 못했습니다 ... 감동이 끝나면 실제로 감동의 시작에서 일어나고 싶은 모든 일들이 일어납니다.

편집 : QML 단추 또는 마우스 영역에 MouseArea.pressed 속성을 더하면 상관 없습니다. 손가락이 터치를 떠나기 전에 아무 것도 누르지 않고 onClicked()도 호출됩니다.

아마도 : Adobe AIR: touch screen doesn't trigger mouse down event correctly -하지만 네이티브 Qt 응용 프로그램에서 Multitouch.inputMode (첫 번째 답글에 언급 된)와 같은 기능에 액세스하는 방법을 찾지 못했습니다.

내 응용 프로그램에 대해 설명 된 동작을 어떻게 얻을 수 있습니까?

+0

"나는 내 응용 프로그램에서 ... 싶다."... 표준 QML'Button's 형식을 사용자 정의'Style's와 함께 사용하면 어떨까요? ? 그렇게하면 원하는 색상/효과를 얻을 수 있습니다. 'mouseArea'에 대해'눌렀다 '와'놓다'하는 것에 대해, 당신의 필요에 충분하지 않은 사건 관리에있어서 세분성은 무엇입니까? 아니면 핵심 세대의 첫 번째 문장에서 말하는 것입니까? – BaCaRoZzo

+0

설명을 추가하기 위해 하나의 문장 추가 : QML 단추 나 mousearea 및 MouseArea를 사용하면 상관 없습니다.pressed 속성 : 손가락이 터치를 떠나기 전에 아무 것도 누르지 않고 onClicked()도 호출됩니다. 그리고 이것은 내가 바꾸고 자하는 것입니다 ;-) 또한 위의 텍스트에서 미래의 독자들을 위해 잘린 내용이 추가되었습니다. – FourtyTwo

+0

그것은 "더하기"가 아닙니다. 관심있는'onPressed' 이벤트 핸들러와'onRelease' 이벤트 핸들러입니다. onclick' 이벤트 핸들러는 여기서 범위를 벗어 났고'MouseArea' 코드에서 정의되거나 사용되어서는 안됩니다. 여전히 문제는 두 핸들러와 스타일의 조합이 문제를 해결할 수 있는가하는 것입니다. 아마 아닌가요? – BaCaRoZzo

답변

2

이 문제에 대한 해결책은 응용 프로그램에서 "길게 누르기"를 해제하는 것입니다. ... 제어판 -> 펜 및 터치 -> 터치 -> 길게 누르기 -> 설정 -> '마우스 오른쪽 버튼을 클릭 한 상태에서 길게 누르기'

을 선택 취소하면 시스템 전체 설정에서 수행 할 수 있습니다.

내가 네이티브 코드이에 발견 유일한 해결책은 여기에서 찾을 수 있습니다 : http://msdn.microsoft.com/en-us/library/ms812373.aspx

내가 QML 근무를 얻으려면 윈도우 7에 대한 작업이 적어도 아직 것을 확인, 나는 * QWindow 검색 QQmlApplicationEngine :: rootObjects()에 저장하고 winId를 HWND로 사용했습니다. 그 HWND로 app.exec() 전에 링크에서 TogglePressAndHold 함수를 호출했습니다.

관련 문제