前言# 项目场景:
硬件为正点原子IMX6ULL开发板,Buildroot搭建根文件系统移植qt时出现触摸屏和字体无法显示问题。
前提工作:
1-添加font字体库至/usr/lib/font。
2-配置环境变量至/etc/profile中,具体如下:
#tslib export
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts/
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export LD_PRELOAD=/usr/lib/libts.so
export QT_QPA_FB_TSLIB=1
#qt export
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1:edevmouse:/dev/input/mouse0
export QT_QPA_FONTDIR=/usr/lib/font
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/qt/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_PLUGIN_PATH=/usr/lib/qt/plugins
export LD_LIBRARY_PATH=/usr/lib/qt/lib:/usr/lib/qt/plugins/platforms
上述配置参考《【正点原子】I.MX6U 移植Qt5.12.9 V1.1.pdf》文档。
3-使用tslib库测试工具ts_test测试触摸屏正常,qt下触屏无效,表示触屏驱动正常,命令码如下:
./ts_test
4-/dev/input/event使用正常,命令码如下:
hexdump /dev/input/event
或
cat /dev/input/event
问题1描述
-
开启buidlroot的menuconfig里的qt5,第一次编译,发现触摸屏无法联动。
-
发现触摸屏无法使用问题,检查menuconfig发现未使能Enable Tslib support,使能该选项,第二次增量编译,发现问题未解决。
Enable Tslib support位置如下:Target packages > Graphic libraries and applications > Qt5 > Enable Tslib support
运行qt程序异常打印如下:
qt No such plugin for spec "tslib:/dev/input/event1:edevmouse:/dev/input/event1”
原因分析:
查找网上资料,有同志反应buildroot下qt得一次性编译,不可以分开增量编译。
所以我这也可能是因为qt5和tslib支持不是一次性编译所导致的异常,我是先选了几个qt子库选项,然后一步步增量编译。
解决方案:
检查buildroot的menuconfig,重新buildroot全部编译。
#清除
sudo make clean
#编译
sudo make
重新nfs挂载后,发现触摸屏可以使用,但是无法显示任何文字。
问题2描述
已经配置过字体库,但是qt界面还是无法显示中英文。怀疑我的虚拟机qt有问题,但是换了虚拟机qt编译,新程序放到板子里还是不显示文字。
原因分析:
不懂menuconfig中qt5配置,勿勾选了fontconfig support。
该原因分析参考网页如下:
https://blog.csdn.net/heli200482128/article/details/70159112
解决方案:
menuconfig里qt配置如下图所示(qt子库均为本人经常使用),然后重新编译。
再次检查buildroot的menuconfig,重新buildroot全部编译。
#清除
sudo make clean
#编译
sudo make
重新nfs挂载后,发现触摸屏使用正常,中英文显示正常,问题解决。
害,折磨了我一天。