鼠标可以工作,但Touch在QML中不起作用

时间:2017-02-24 20:18:17

标签: qt raspberry-pi qml touchscreen adafruit

我正在开发一个基于RPI和触摸屏并在前端使用QML / Qt Quick的项目。对于触摸屏,我使用的是 Adafruit 5英寸触摸屏,它可以通过microUSB进行触摸响应。 RPI桌面上的触摸工作正常,但是当我运行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();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

  1. 确保您的系统已支持触摸屏输入,并包含libinput或tslib。您可以使用evtest命令并触摸触摸屏来测试触摸事件是否到达evdev。您还可以使用cat /dev/input/eventX | hexdump

  2. 直接阅读触摸屏驱动程序
  3. 如果有效,那可能是input integration problem with Qt。你的选择是libinput,或直接evdev。我建议您检查一下configure日志,然后了解是否由于依赖检查失败而未构建某个模块。从同一页面引用:

  4.   

    运行configure后,请务必检查其输出。不   具有必要的eglfs后端,libudev或libinput启用到期   对应的配置测试失败是相当常见的问题   这种方式可以轻松快速地识别出来。什么时候有   不受欢迎的"不"结果,使用-v运行configure以打开详细输出   为了查看每个configure的编译器和链接器调用   测试

答案 1 :(得分:0)

尝试禁用内置输入处理程序 export QT_QPA_EGLFS_DISABLE_INPUT=1

QT使用libinput作为默认的输入处理程序。如果您想使用另一个处理程序,则应禁用libinput。影响取决于您选择用libinput替换的内容。在tslib的情况下,它只支持单点触摸。您可以阅读更多相关信息here