700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 移植QT多点触摸

移植QT多点触摸

时间:2022-04-14 09:09:41

相关推荐

移植QT多点触摸

注:本方法只在zynq平台,qt:5.3.2 编译器:gcc-linaro-arm-linux-gnueabihf-4.8下试验成功,其他平台未做测试,不同的qt和工具链版本之间会有一定的差异。

零,前提是触摸屏的硬件及驱动是支持多点触摸的(evtest程序测试),否则就不用看了

一,设置交叉编译工具链

~/.bashrc中添加工具链:

export CROSS_COMPILE=arm-linux-gnueabihf-

export PATH=/home/brook/work/cross_compiler/gcc-linaro-arm-linux-gnueabihf-4.8/bin:$PATH

使工具链生效 $ source ~/.bashrc ,或者重启电脑

二,移植mtdev,用于多点触摸的库

1,下载源码:

git clone /git/mtdev.git

2,配置编译

./autogen.sh (失败的话;sudo apt-get install autoconf automake libtool)

./configure --prefix=/home/brook/work/ZYNQ/mtdev/mtdev/out_temp/ --host=arm-linux CC=arm-linux-gnueabihf-gcc

make install

将编译出的so库,拷贝到开发板的/lib, /usr/lib等能访问到的库路径下即可

三、编译qmake

1,在PC上安装多点触摸库,其实就是为了后面编译qmake,它去链接多点触摸库时,用PC上的骗过它,而不是用交叉编译的。还一种编译方式就是修改QT源码将所有判断mtdev的地方(搜索QT_NO_MTDEV)修改掉,就不用配置PKG_CONFIG_SYSROOT_DIR了。

sudo apt install libmtdev-dev (安装的版本和交叉编译的版本差异不要太大)

2,配置和编译

修改qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf工具链后面添加hf(因为这里的工具链是带硬编码的)

export PKG_CONFIG_SYSROOT_DIR=/

export PKG_CONFIG_LIBDIR=/home/brook/work/ZYNQ/mtdev/mtdev/out_temp/lib/pkgconfig/

export PKG_CONFIG_LIB=/home/brook/work/ZYNQ/mtdev/mtdev/out_temp/lib/pkgconfig/

./configure -release -opensource -xplatform linux-arm-gnueabi-g++ -prefix /opt/Qt-5.3.2/ -no-c++11 -no-opengl -mtdev -I /home/brook/work/ZYNQ/mtdev/mtdev/out_temp/include -L /home/brook/work/ZYNQ/mtdev/mtdev/out_temp/lib -lmtdev

make

make install

3,将相关qt库安装到系统中,其他的库就不说了,关键将Qt-5.3.2/plugins/generic/libqevdevtouchplugin.so拷贝到对应的plugins/generic/目录下

4,启动QT程序时环境配置

export LD_LIBRARY_PATH=/usr/qt/lib:$LD_LIBRARY_PATH #配置qt库路径

export QT_QPA_FONTDIR=/app/fonts #配置字体路径

export DISPLAY=:0

export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/qt/plugins #插件路径

export QT_IM_MODULE=mockup

export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/qt/plugins #下面是支持多点触摸的

export QT_QPA_GENERIC_PLUGINS=EvdevTouch

export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event1

四,测试

编译qmake生成的测试程序是多点触摸测试的:

Qt-5.3.2/examples/touch/pinchzoom/pinchzoom //放大缩小

Qt-5.3.2/examples/touch/fingerpaint/fingerpaint //多个手指同时划线

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。