Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 在QML中,鼠标工作,但触摸不工作_Qt_Raspberry Pi_Qml_Touchscreen_Adafruit - Fatal编程技术网

Qt 在QML中,鼠标工作,但触摸不工作

Qt 在QML中,鼠标工作,但触摸不工作,qt,raspberry-pi,qml,touchscreen,adafruit,Qt,Raspberry Pi,Qml,Touchscreen,Adafruit,我正在从事一个基于RPI和触摸屏的项目,并在前端使用QML/Qt Quick。对于触摸屏,我使用的是Adafruit 5英寸触摸屏,它通过microUSB接收触摸响应。RPI桌面上的触摸操作可以正常工作,但当我运行QML应用程序并尝试触摸按钮时,它没有响应。当按钮上有鼠标指针时,触摸会做出响应。此外,我还尝试使用以下方法旋转屏幕: export QT_QPA_EGLFS_ROTATION=180 但是没有起作用 我不知道我做错了什么?有人能帮我吗 提前谢谢 下面是我为运行应用程序而设置的参数

我正在从事一个基于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();
        }
    }
}
  • 确保您的系统已经支持触摸屏输入,并且包括libinput或tslib。您可以通过使用
    evtest
    命令并触摸触摸触摸屏来测试触摸事件是否到达evdev。您还可以使用
    cat/dev/input/eventX | hextump

  • 如果这行得通的话,那可能是个错误。您的选项是libinput,或者直接使用evdev。我建议您检查
    configure
    log,然后了解是否由于依赖性检查失败而未构建某些模块。引自同一页:

  • 运行configure后,请确保检查它的输出。不 已启用必要的eglfs后端、libudev或libinput 对于相应的配置测试,失败是相当常见的问题 通过这种方式可以轻松快速地识别。当有 不希望出现“否”结果,请运行configure with-v以打开详细输出 为了查看每个配置的编译器和链接器调用 测试


    尝试禁用内置输入处理程序
    export QT\u QPA\u EGLFS\u DISABLE\u INPUT=1


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

    我检查了配置输出,并且我有触摸所需的所有文件,例如:eglfs。。仍然收到此错误。好的,您知道触摸设备的路径吗?如果是,当你玩它时,它会输出什么吗?或者它是作为标准鼠标处理的,而不是触摸屏?这有什么可能的影响吗?为什么您认为它可以解决这个问题?QT使用libinput作为默认的输入处理程序。如果您想使用另一个处理程序,则应该禁用libinput。影响将取决于您选择用什么替换libinput。在tslib的情况下,它只支持单点触摸。你可以阅读更多关于它的好信息,你应该把它包括在实际的答案中,如果你这样做了,你可能会得到一些选票