2017-02-24 365 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

相关问题