NXP i.MX6 QT使用常见问题

本文详细介绍了在眺望电子TW-IMX6DL-EVM开发板上使用QT时可能遇到的问题及其解决方法。包括编译错误、鼠标键盘使用、触摸屏功能、中文显示、QSQLITE驱动加载、‘doesnotsupportsetparent’错误以及程序开机自启等问题,提供了具体的环境配置、命令行操作和配置文件修改建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

眺望电子TW-IMX6DL-EVM开发板上QT使用常见问题分享。

编译环境及开发包: 主机:ubuntu18.04
交叉编译器:arm-linux-gnueabihf-gcc
QT5.12.8:qt-everywhere-opensource-src-5.12.8
开发板:TW-IMX6DL-EVM
Linux:Linux-4.1.15
串口工具:Xshell

注意:本文章的所有命令涉及到的路径均为眺望电子官方环境路径,需根据自身实际环境改变。本文所演示的平台来自于眺望电子 iMX6 ARM嵌入式平台,这是一个基于NXP iMX6 ARM处理器,支持单核/双核Cortex-A9的核心板。


解决方案:

1.编译出错

检查qmake、交叉工具链、kits在Qt中是否正确配置;
是否有source交叉编译工具配置脚步;
不是使用“sudo qtcreator”打开Qt。

2.鼠标及键盘不能使用

禁止Qt内置输入,把/etc/profile文件添加如下参数:

export QT_QPA_EGLFS_DISABLE_INPUT=1

事件与输入设备对应关系测试
每一个输入设备的接入都会在/dev/input/下生成自己的一个事件,然后Qt通过指定对应的事件去使用输入设备(如键盘和鼠标),查看生成的事件:

root@imx6dlsabresd:~# ls /dev/input/event*
/dev/input/event0

利用hexdump进行测试,输入命令后输入信号(触摸屏幕,按键盘,鼠标…),串口会相应地打印数据。

root@imx6dlsabresd:~# hexdump /dev/input/event0

指定输入设备有两种方式:
   在板子上运行qt时加-plugin参数,这种方式比较灵活

./hello -plugin tslib:/dev/input/touchscreen0 -plugin evdevmouse:/dev/input/eventX -plugin evdevkeyboard:/dev/input/eventY

每个输入设备都会产生属于自己的事件,不使用不需要指定。
 -plugin tslib:/dev/input/touchscreen0为指定LCD触摸屏设备;
 -plugin evdevmouse:/dev/input/eventX为指定鼠标输入设备,X为鼠标的设备号(X=1,2,3…);
 -plugin evdevkeyboard:/dev/input/eventY为指定键盘输入设备,Y为鼠标的设备号(Y=1,2,3…)。

添加环境变量

export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/touchscreen0,evdevmouse:/dev/input/eventX, evdevkeyboard:/dev/input/eventY

3.qt触摸屏不能使用

这是qt的 QT_QPA_GENERIC_PLUGINS和TSLIB_TSDEVICE环境变量没有设置正确导致的。在 /etc/profile文件中添加如下内容:

export TSLIB_TSDEVICE=/dev/input/touchscreen0
export QT_QPA_GENERIC_PLUGINS="tslib:/dev/input/touchscreen0"

touchscreen0是输入设备,但有时不同接口的触摸屏可能就不是这个设备名,所以在设置该变量的时候请用如下命令测试您的输入设备,如有输出表明该输入设备即为您正在使用的触摸屏。当然,鼠标,键盘等一些输入设备可以用此命令测试。

hexdump /dev/input/输入设备

4.无法显示中文

qt默认不支持中文显示,解决方法是中文库文件(如:wqy-microhei.ttf)拷贝到板子的/usr/lib/fonts/目录即可。

5.QSQLITE driver not loaded

解决这个问题的方法是,移植qsqlite插件。把生成的sqldrivers/目录拷贝到板子的/usr/lib/qt5/plugins/目录下。最后在板子的/etc/profile 文件中添加如下内容:

export QT_PLUGIN_PATH=/usr/lib/qt5/plugins

应用编程时需在 pro文件中添加如下内容:

QT += sql
QT += core
QTPLUGIN += qsqlite

6.does not support setparent

使用gstreamer或qt开发,运行程序出现“does not support setparent”。
  出现此问题的原因是程序使用了x11相关库,基于x11开发可使用ubuntu文件系统或者改用其它插件。

7qt程序开机自启

问题描述:开机启动之后qt程序不能运行。
  问题分析:出现这个问题通常是开机启动之后,qt的环境变量还没有设置,qt应用程序就运行了。
  
#在自启程序前面加上一些Qt的环境变量

export QML2_IMPORT_PATH=/usr/lib/qt5/qml
export QT_EGLFS_IMX6_NO_FB_MULTI_BUFFER=2
export QT_QPA_GENERIC_PLUGINS="tslib:/dev/input/touchscreen0"
export QT_QPA_EGLFS_TSLIB=1
export QT_QPA_PLATFORM=eglfs
export QT_QPA_EGLFS_DISABLE_INPUT=1

#Qt程序

/opt/qt_test &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

眺望电子-ARM嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值