我正在开发一个基于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();
}
}
}
答案 0 :(得分:1)
确保您的系统已支持触摸屏输入,并包含libinput或tslib。您可以使用evtest
命令并触摸触摸屏来测试触摸事件是否到达evdev。您还可以使用cat /dev/input/eventX | hexdump
如果有效,那可能是input integration problem with Qt。你的选择是libinput,或直接evdev。我建议您检查一下configure
日志,然后了解是否由于依赖检查失败而未构建某个模块。从同一页面引用:
运行configure后,请务必检查其输出。不 具有必要的eglfs后端,libudev或libinput启用到期 对应的配置测试失败是相当常见的问题 这种方式可以轻松快速地识别出来。什么时候有 不受欢迎的"不"结果,使用-v运行configure以打开详细输出 为了查看每个configure的编译器和链接器调用 测试
答案 1 :(得分:0)
尝试禁用内置输入处理程序
export QT_QPA_EGLFS_DISABLE_INPUT=1
QT使用libinput作为默认的输入处理程序。如果您想使用另一个处理程序,则应禁用libinput。影响取决于您选择用libinput替换的内容。在tslib的情况下,它只支持单点触摸。您可以阅读更多相关信息here