本文以飞凌嵌入式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编码格式. 减少乱码的情况。
注:外边文件夹有例子和字体包
|