输入事件类型
./configure -help
//可以看到这些输出
-libudev............ Enable udev support [auto]
-evdev ............. Enable evdev support [auto]
-imf ............... Enable IMF support [auto] (QNX only)
-libinput .......... Enable libinput support [auto]
-mtdev ............. Enable mtdev support [auto]
-tslib ............. Enable tslib support [auto]
-xcb-xinput ........ Enable XInput2 support [auto]
-xkbcommon ......... Enable key mapping support [auto]
以上就是 Qt 支持的输入事件,在嵌入式设备中我们比较常接触的一个是电阻屏时代的 tslib 一个是电容屏比较常用的 evdev 两种
区别
对于 Qt 而言,它支持 tslib 单点输入,tslib 是一个第三方库,对电阻屏这类低精度屏而言表现较为优秀;而 evdev 则是 Qt 自带输入库,支持多点输入,但是对于电阻这类需要校准的屏幕效果不好,适合电容这类屏幕
配置说明
tslib
这个适用于电阻屏,当然电容屏也可以使用,不过会出现两者不匹配的问题,需要重新校准一下,这部分可以网上检索太多了
Qt 加入 tslib 支持
1) 编译环节
在你的./configure 后面添加这几个参数
-tslib \
-I /opt/tslib-1.14/include \
-L /opt/tslib-1.14/lib \
前提你需要提前编译好 tslib 的库
#这个是 tslib 配置的脚本,供你参考
./configure --host=arm-linux-gnueabihf --prefix=/opt/tslib-1.14 CC=arm-linux-gnueabihf-gcc ac_cv_func_malloc_0_nonnull=yes
成功之后,make , make install 这里就不说了
2)配置文件(运行设备)
# eglfs 显示平台使用这个参数
export QT_QPA_EGLFS_TSLIB = 1
# linuxfb 显示平台使用这个参数
export QT_QPA_FB_TSLIB = 1
evdev
1)编译
evdev 一般都是默认添加到编译之中,如果遇到提示 tslib.h 不存在,而你不需要 tslib 库的时候
-evdev #显示声明只需要这个输入支持
2)配置文件
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event1:rotate=180
Parameter | Description |
---|---|
/dev/input/ | 指定输入设备,没有指定 Qt 会通过 libudev 检索 或则 遍历找到一个有效的节点 |
rotate | 触摸屏幕旋转,必须是 90 , 180 , 270 中的一个 |
invertx and inverty | 指定 X / Y 倒置的坐标 |