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/music

1.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() 函数转换字符串,可减少乱码情况。

行动点

  1. 开发新Qt应用时,优先采用方法二设置全局字体和编码,避免逐个类配置
  2. 屏幕旋转后务必测试各界面的显示效果,必要时调整UI布局
  3. 自启动脚本中保留必要的环境变量设置,避免程序运行异常

关联知识


本文档版权归保定飞凌嵌入式技术有限公司所有