Qt5嵌入式触摸屏无法工作。

3

我正在使用嵌入式Linux平台上的Qt5进行开发。当我使用Linux帧缓冲运行程序时,触摸屏无法工作。例如:

./myprog -plugin tslib:/dev/input/event0

更多细节:

  • ts_calibrate works fine
  • when I run my program with ./myprog -platform eglfs, touchscreen works fine
  • my environment:

    TSLIB_TSDEVICE=/dev/input/event0
    USER=root
    LD_LIBRARY_PATH=/usr/local/Qt-5.3.2/lib/
    TSLIB_TSEVENTTYPE=INPUT
    OLDPWD=/usr/local/Qt-5.3.2
    HOME=/root
    QTDIR=/
    TSLIB_FBDEVICE=/dev/fb0
    QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/event1
    TSLIB_PLUGINDIR=/usr/lib/ts
    TSLIB_CONSOLEDEVICE=none
    LOGNAME=root
    TERM=vt102
    QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=rotate=270
    PATH=/sbin:/usr/sbin:/bin:/usr/bin
    QT_QPA_GENERIC_PLUGINS=evdevmouse:/dev/input/event0
    TSLIB_CONFFILE=/etc/ts.conf
    SHELL=/bin/sh
    QWS_DISPLAY=powervr
    QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:rotation=0
    PWD=/root
    QWS_MOUSE_PROTO=tslib
    TSLIB_CALIBFILE=/etc/pointercal
    
  • Qt 5.3.2 config.status :

     configure -verbose -confirm-license -release -no-xcb -no-pch -icu -tslib -qpa eglfs -no-c++11 -no-cups -no-gtkstyle -make libs -opensource -skip qtactiveqt -skip qtandroidextras -skip qtconnectivity -skip qtenginio -skip qtimageformats -skip qtlocation -skip qtmacextras -skip qtsensors -skip qtserialport -skip qttranslations -skip qttools -skip qtwebkit-examples -skip qtwinextras -skip qtx11extras -xplatform linux-omap3-g++ -qpa eglfs -qpa linuxfb -evdev
    
4个回答

1
Qt对tslib的支持并不稳定。我发现Qt的一部分尝试实现手势,但另一部分则尝试将触摸映射为鼠标点击。根据我的个人经验,结果是未完成/丢失手势。

我该如何在Qt5中使用linuxfb触摸屏?有哪些技术可以用于此? - Andrew P.
使用调试器查看QWSTslibMouseHandlerPrivate::readMouseData(),你会看到关键部分。并且研究调用堆栈。顺便说一下,你没有说明你想要触摸是鼠标点击还是手势。虽然不如手势那么吸引人,但点击要简单得多。 - donjuedo

1
我希望你能找到解决方案。如果没有,可以尝试以下步骤:
  1. 指定TSLIB设备

    export TSLIB_TSDEVICE=/dev/input/event0

  2. 在某些设备上需要启用TSLIB支持(在我的板子上不需要)

    export QT_QPA_FB_TSLIB=1

  3. 启动应用程序

    ./myCuteQt5App -platform linuxfb -plugin tslib

一切应该正常工作(在我的情况下非常好用;))。

希望这有所帮助。


1

由于您有evdev可用,因此使用它进行输入可能会更成功。我已经成功地使用了以下内容:

export QT_QPA_PLATFORM=linuxfb
export QT_QPA_GENERIC_PLUGINS=evdevtouch,evdevmouse,evdevkeyboard
export QT_QPA_EVDEV_KEYBOARD_PARAMETERS=grab=1

0

从tslib版本1.3开始,您可以使用包含的ts_uinput守护程序创建evdev输入设备。将您的evdev环境指向它,您就可以获得经过tslib过滤和校准的触摸输入,而无需使用QT的tslib插件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接