1

我正在开发一个基于 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();
        }
    }
}
4

2 回答 2

1
  1. 确保您的系统已经支持触摸屏输入,并且包括 libinput 或 tslib。evtest您可以通过使用该命令并触摸您的触摸屏来测试触摸事件是否到达 evdev 。您也可以直接从您的触摸屏驱动程序中读取cat /dev/input/eventX | hexdump

  2. 如果可行,那可能是Qt 的输入集成问题。您的选择是 libinput 或 evdev 直接。我建议您检查您的configure日志,然后了解是否由于依赖项检查失败而未构建某些模块。从同一页面引用:

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

于 2017-02-25T09:32:12.797 回答
0

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

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

于 2017-11-27T20:11:23.927 回答