2017-02-24 5 views
1

RPI 및 터치 스크린을 기반으로하고 프런트 엔드에서 QML/Qt Quick을 사용하는 프로젝트를 진행하고 있습니다. 터치 스크린 용으로는 Adafruit 5 인치 터치 스크린이 microUSB로 터치 반응을 보입니다. RPI 데스크탑의 터치는 잘 작동하지만 QML 애플리케이션을 실행하고 버튼을 터치하려고해도 응답하지 않습니다. 버튼에 마우스 포인터가있을 때 터치가 반응합니다. 또한 다음과 같이 화면 회전을 시도했습니다.마우스가 작동하지만 QML에서 Touch가 작동하지 않습니다.

export QT_QPA_EGLFS_ROTATION=180 

그러나 작동하지 않았습니다.

내가 뭘 잘못하고 있는지 모르겠다. 이 일로 나를 도울 수있는 사람이 있습니까?

미리 감사드립니다.

다음은 응용 프로그램을 실행하기 위해 설정하는 매개 변수입니다.

#!/bin/sh 
export LD_LIBRARY_PATH=/usr/local/qt5pi/lib 
export QML_IMPORT_PATH=/usr/local/qt5pi/qml 
export QML2_IMPORT_PATH=/usr/local/qt5pi/qml 
export QT_QPA_PLATFORM=eglfs 
export QT_QPA_EGLFS_TSLIB=1 
export QT_QPA_EGLFS_HIDECURSOR=1 
export QT_QPA_EGLFS_MOUSE_PARAMETERS=abs 
export QT_QPA_EGLFS_PHYSICAL_WIDTH=210 
export QT_QPA_EGLFS_PHYSICAL_HEIGHT=150 

/usr/local/qt5pi/bin/qmlscene testQml.qml 

테스트 코드 testQml.qml

import QtQuick 2.0 
Rectangle { 
    id:rootTangle 
    width:360 
    height: 360 
    color:"red" 

    Rectangle { 
     id: blueRec 
     color: "blue" 
     width: rootTangle.width/2 
     height: rootTangle.height/6 
     anchors.centerIn: rootTangle 
     border.width:7 
     border.color: "#000000" 
     radius: 20 
    } 

    MouseArea { 
     id:blueRecMouseArea 
     anchors.fill:blueRec 
     onClicked: { 
      Qt.quit(); 
     } 
    } 
} 

답변

1
  1. 시스템에 이미 터치 스크린 입력을 지원하며, libinput 또는 tslib이 포함되어 있는지 확인합니다. evtest 명령을 사용하고 터치 스크린을 터치하여 터치 이벤트가 evdev에 도착하는지 테스트 할 수 있습니다. 당신은 또한 직접 당신에게서 읽을 수 있습니다 cat /dev/input/eventX | hexdump

  2. 만약 그것이 작동한다면, 그것은 아마도 input integration problem with Qt 일 것입니다. 귀하의 옵션은 libinput 또는 evdev입니다. 내가 당신을 확인하는 것이 좋습니다 configure 로그 일부 모듈은 의존성 검사가 실패로 인해 지어지지 않았는지 이해하기 위해. 같은 페이지에서 인용 :

구성을 실행 한 후, 그것의 출력을 검사해야합니다. 해당 구성 테스트에 실패하여 으로 인해 필요한 eglfs 백엔드, libudev 또는 libinput이 활성화되지 않은 이 쉽고 빠르게 이러한 방식으로 인식 될 수있는 비교적 일반적인 문제 입니다. "no"라는 결과가 나올 때마다 세부 출력을 설정하려면 -v를 사용하여 configure를 실행하여 각 구성 구성에 대한 컴파일러 및 링커 호출을 확인합니다. 내장 된 입력 처리기 export QT_QPA_EGLFS_DISABLE_INPUT=1

QT를 사용하지

+0

구성 출력을 확인하고 예 : eglfs ..와 같이 필요한 모든 파일을 가지고 있습니다. 여전히이 오류가 발생합니다. – ryuk

+0

좋아, 터치 장치의 경로가 무엇인지 알아? 그렇다면, 그걸 가지고 놀 때 뭔가를 출력합니까? 또는 터치 스크린이 아닌 표준 마우스로 처리됩니까? –

0

봅니다 기본 입력-핸들러로 libinput 사용합니다. 대신에 다른 핸들러를 사용하려면 libinput을 비활성화해야합니다. 반향은 당신이 libinput을 대체하기로 선택한 것에 달려 있습니다. tslib의 경우 단일 터치 만 지원합니다. 그것에 대해 자세히 알 수 있습니다 here

+0

여기에 어떤 영향이 있습니까? 왜 그것이 문제를 해결할 것이라고 생각합니까? – Taegost

+0

QT는 libinput을 기본 입력 처리기로 사용합니다. 대신에 다른 핸들러를 사용하려면 libinput을 비활성화해야합니다.반향은 당신이 libinput을 대체하기로 선택한 것에 달려 있습니다. tslib의 경우 단일 터치 만 지원합니다. [여기]에 대한 자세한 내용을 볼 수 있습니다 (http://doc.qt.io/qt-5/embedded-linux.html) – hakskel

+0

좋은 정보, 실제 답변에 포함시켜야합니다. 당신이 – Taegost