Qt相关应用笔记 - 飞凌OKMX6DL/Q平台
概述
本文档是飞凌嵌入式针对OKMX6DL/Q-C平台(基于NXP i.MX6DL/Q处理器)的Qt应用开发指南,主要解决嵌入式Linux系统下Qt应用程序的桌面集成、自启动配置、屏幕旋转和中文显示等常见问题。
- 平台: OKMX6DL/Q-C (i.MX6DL/Q)
- 操作系统: Linux 3.0.35
- Qt版本: Qt 4.8.5
- 日期: 2018.11.10
核心知识点
1. 将Qt程序加载到主界面
默认桌面环境使用 fluidlauncher,自定义应用需要修改三个位置:
1.1 修改配置文件
编辑 /opt/qt4.8.5/demos/embedded/fluidlauncher/config.xml,在相应位置添加:
<example filename="../../../apps/music" name="MUSIC test" image="screenshots/apps/music.png"/>1.2 添加桌面图标
在 /opt/qt4.8.5/demos/embedded/fluidlauncher/screenshots/apps/ 目录下放置对应的PNG图标文件。
1.3 添加可执行文件
将编译好的可执行程序放入 /opt/qt4.8.5/apps/ 目录,并赋予执行权限:
chmod +x /opt/qt4.8.5/apps/music1.4 保存并生效
执行 sync 后重启开发板,主界面即可看到新添加的程序。
2. 开机自启动Qt应用程序
若希望系统启动后直接运行特定Qt程序而非默认桌面,修改 /etc/rc.d/apps.sh:
#!/bin/sh
#app
#cd /opt/qt4.8.5/demos/embedded/fluidlauncher
#./fluidlauncher -qws &
cd /opt/qt4.8.5/apps
./music -qws &关键要点:
- 注释掉原fluidlauncher启动行
- 添加目标程序的完整路径和执行参数
-qws是Qt for Embedded Linux的窗口系统参数- 修改源码后重新制作文件系统映像并烧写
3. Qt桌面旋转90度
通过修改Qt环境变量脚本实现屏幕旋转:
编辑 /etc/rc.d/qt_env.sh,修改 DISPLAY 环境变量:
# 原始设置
export QWS_DISPLAY="linuxfb:mmWidth50:mmHeight130:0"
# 旋转90度
export QWS_DISPLAY="Transformed:Rot90:LinuxFb:/dev/fb0"可选旋转角度:Rot90、Rot180、Rot270
注意:某些Qt界面可能不适应旋转后的宽高比,需要重新编译调整UI布局。
4. Qt程序显示汉字
方法一:修改字体目录
条件一:汉字库
- 从Windows系统拷贝
simsun.ttc(宋体)到Qt字体目录:cp simsun.ttc /opt/qt4.8.5/lib/fonts/ - 使用
-font参数指定字体:./test -font simsun
条件二:汉字编码 在类的构造函数中添加:
Ui->setupUi(this);
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8")); // tr()编码
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf8")); // QString编码注意事项:
- 这两条语句放在构造函数中只对当前类有效
- 放在
main()函数中无效 tr("中文")能正常显示,但QString str("中文")会乱码,除非设置编码
方法二:指定全局默认字体
在 main() 函数中设置:
QFont font("simsun", 12);
QApplication::setFont(font);
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));使用QT内建 tr() 函数转换字符串,可减少乱码情况。
行动点
- 开发新Qt应用时,优先采用方法二设置全局字体和编码,避免逐个类配置
- 屏幕旋转后务必测试各界面的显示效果,必要时调整UI布局
- 自启动脚本中保留必要的环境变量设置,避免程序运行异常
关联知识
- LVDS移植笔记-飞凌OKMX6 - 同系列应用笔记,涉及屏幕硬件配置
- LCD移植笔记-飞凌OKMX6 - 显示屏驱动移植指南
- MFGTool-V2-UCL配置手册 - 文件系统修改后的烧录工具
本文档版权归保定飞凌嵌入式技术有限公司所有