2017-02-24 361 views
1

我正在開發基於RPI和觸摸屏並在前端使用QML/Qt Quick的項目。對於觸摸屏,我正在使用Adafruit 5英寸觸摸屏,它採用microUSB的觸摸響應。在RPI桌面上的觸摸工作正常,但是當我運行QML應用程序並嘗試觸摸按鈕時,它不響應。當按鈕上有鼠標指針時,觸摸響應。此外,我試圖旋轉屏幕:鼠標工作但觸摸無法在QML中工作

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。我建議你檢查你的日誌,然後瞭解一些模塊是否由於失敗的依賴性檢查而不能生成。在同一頁面引用:

運行配置後,請務必檢查它的輸出。不是 由於 已啓用必要的eglfs後端,libudev或libinput以進行相應的配置測試,因此可以通過此方式輕鬆快速地識別出相當常見的問題 。如果出現 意外的「否」結果,請運行configure -v打開詳細輸出 以查看每個配置 測試的編譯器和鏈接器調用。

+0

我檢查配置輸出,我有觸摸所有必要的文件,例如:eglfs ..仍然得到這個錯誤。 – ryuk

+0

好的,你知道你的觸摸設備的路徑是什麼?如果是,當你玩它時輸出什麼?或者它是作爲標準鼠標處理的,而不是觸摸屏? –

0

嘗試禁用內置的輸入處理程序 export QT_QPA_EGLFS_DISABLE_INPUT=1

QT使用libinput爲默認輸入處理程序。如果您想使用其他處理程序,則應禁用libinput。影響將取決於您選擇用什麼替換libinput。在tslib的情況下,它只支持單點觸摸。你可以閱讀更多關於它here

+0

這有沒有可能的影響?你爲什麼認爲它會解決這個問題? – Taegost

+0

QT使用libinput作爲默認輸入處理程序。如果您想使用其他處理程序,則應禁用libinput。影響將取決於您選擇用什麼替換libinput。在tslib的情況下,它只支持單點觸摸。你可以閱讀更多關於它的信息(http://doc.qt.io/qt-5/embedded-linux.html) – hakskel

+0

好的信息,你應該把它包含在實際的答案中,你可能會得到一些upvotes如果你沒有 – Taegost

相關問題