绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
飞凌i.MX6系列应用笔记-iMX6Q开发板QT相关应用讲解
2021-01-30 14:40:41

本文以飞凌嵌入式OKMX6Q/DL-C开发板为基础讲解,操作系统为Linux3.0.35,其它品牌产品请参考使用,本文主要介绍了iMX6Q开发板如何将QT程序加载到主界面、iMX6Q开机自启动QT应用程序、QT桌面旋转90度以及QT程序显示汉字写本文章主要是记录日常客户经常问到的一些问题,为客户提供一些解决思路,希望可以协助客户加速产品的研发速度,由于水平有限,在服务过程中所提供的任何资料和信息,都仅供参考。

一、iMX6开发板如何将QT程序加载到主界面

以下的方法是如何将自己的QT程序加载到桌面的主界面上。我们以添加 music 程序为例:

1、在文件系统中进行修改:

修改 opt/qt4.8.5/demos/embedded/fluidlauncher/config.xml 文件:
打开该文件后,在的下一行添加,添加完成后记得保存。
2、添加应用的桌面图标:

在 opt/qt4.8.5/demos/embedded/fluidlauncher/screenshots/apps 中添加 music.png图片,用作主界面识别 music 程序用。
3、添加可执行程序:

在 opt/qt4.8.5/apps 中添加自己编译的可执行文件 music,并给可执行文件用chmod命令赋予可执行权限。
4、保存并应用:

如果以上操作是在iMX6Q开发板上进行的,完成后需执行sync 保存,重启iMX6Q开发板此时打开主界面,即可看到自己添加的music 可执行程序。也可以在iMX6Q用户资料的文件系统中修改,修改完成后重新打包并烧写到iMX6Q开发板上即可。

二、开机自启动QT应用程序

以下方法是如何将自己做的应用程序设置为iMX6Q开发板启动直接运行,我们以music程序为例,假设该文件放到了/opt/qt4.8.5/apps 路径下,客户自己操作时请根据实际的文件名和路径。

修改开机启动脚本

OKMX6平台 Qt 系统开机后默认启动桌面程序 fluidlauncher,若要改成默认启动其他 Qt应用程序,修改文件系统/etc/rc.d/apps.sh,如果在iMX6Q开发板上操作,在超级终端执行以下命令:

root@freescale /$ vi /etc/rc.d/apps.sh

通过vi命令将apps.sh修改为以下内容:

#!/bin/sh
#app
#cd /opt/qt4.8.5/demos/embedded/fluidlauncher
#./fluidlauncher -qws &
cd /opt/qt4.8.5/apps
./music -qws &
#apps

保存该文件后,执行sync保存命令;重启就可以看到默认启动了刚设置的应用程序。也可以修改文件系统源码下的etc/rc.d/apps.sh,改动方法同上,然后重新制作文件系统映像并烧写到iMX6平台。

三、QT桌面旋转90度

通过以下方法可以将屏幕上的QT旋转90度,180度或者是270度。以旋转90度为例:

修改文件系统中的QT环境变量脚本:

root@freescale /$ vi/etc/rc.d/qt_env.sh
将export QWS_DISPLAY="linuxfb:mmWidth50:mmHeight130:0"
修改为export QWS_DISPLAY=”Transformed:Rot90:LinuxFb:/dev/fb0”

修改完成后保存该文件并执行sync命令后,重启iMX6Q开发板即可;有些QT界面不能够适应旋转后的宽高等,需要重新编译调整下qt界面的图形界面。也可以修改文件系统源码下的etc/rc.d/qt_env.sh,改动方法同上,然后重新制作文件系统映像并烧写到平台。

四、QT程序显示汉字

有些客户想要在QT应用界面上显示中文,可以参考以下方法,要在 Qt 的应用程序中显示汉字,需满足2 个条件。

方法1

汉字库

如“宋体” simsun.ttc,如果 Qt 找不到汉字库,或者要显示的汉字不再 Qt能找到的汉字库中,可以用 WindowsXp 下的字库文件,在 windows/fonts 目录直接拷贝到 Qt 的 lib/fonts 目录下(/opt/qt4.8.5/lib/fonts); 使用./test –font simsun 即可显示字体。

汉字编码

需要将要显示汉字的编码告诉 Qt,如果使用 tr 转换显示的汉字,则在类的构建函数中添加

Ui->setupUi(this);

QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));//tr 使用的编码

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf8"));//QString 使用的编码,没有这一条

//则 QString str(tr(“中文” )),能正常显示, QString str(“中文” );会显示乱码。

另外要特别注意的是这两条语句放置的位置,在构造函数中,只对当前类有效,放到main 函数中,。

这样,在该类的后面使用 tr 转换的字符串,就会认为是 utf8 编码的了。

注:外边文件夹有例子和字体包

方法2

汉字库

如果 Qt 找不到汉字库,或者要显示的汉字不再 Qt能找到的汉字库中, 可以用 Windows 下的字库文件[c:windowsfonts ]目录直接拷贝到 Qt 的 lib/fonts 目录下(/opt/qt4.8.5/lib/fonts).此方法需要放置两个字体文件到fonts下。

汉字编码

需要将要显示汉字的编码告诉 Qt. 本历程在main函数中指定程序默认字体和字体大小, 并指定汉字编码默认为utf8格式。


指定程序全局默认显示中文字体库, 和字体大小。



显示中文, 使用 QT内建 tr()转换函数, 转换为上文程序默认指定的utf8编码格式. 减少乱码的情况。



注:外边文件夹有例子和字体包

分享好友

分享这个小栈给你的朋友们,一起进步吧。

飞凌嵌入式ARM主板
创建时间:2020-12-11 16:48:30
分享飞凌嵌入式ARM核心板&开发板研发干货:包括硬件、软件(Linux/Android)等及行业应用方案分享。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • ningmengzier
    栈主
戳我,来吐槽~