原创 TorizonQt容器中文显示

2022-4-2 12:05 867 8 3 分类: MCU/ 嵌入式

By Toradex胡珊逢

Torizon 系统的其中一个特色是以容器形式开发应用程序。Toradex 提供了丰富的基础 docker 镜像加速客户应用开发,这包括 Qt5。本文将介绍如何往 docker 镜像添加中文字体,并在 Qt 图形界面应用程序显示。

 

Torizon 的容器是基于 debian 构建,因此可以从丰富的 debian 软件源受益,用户能够通过 apt 命令安装任何支持 Arm 处理器的软件。有些字体文件也可以通过这种方法安装。例如支持中文的开源字体文泉驿。

 

 Torizon 中创建一个 debian 容器,并启动 bash 工具。

-------------------------------------------------

$ docker run -it --rm torizon/debian:$CT_TAG_DEBIAN /bin/bash

-------------------------------------------------

 

然后通过 apt 命令安装文泉驿字体,最后字体文件会出现在 /usr/share/fonts/truetype/ 目录下。

-------------------------------------------------

root@acd322ec8e84:/# apt update

root@acd322ec8e84:/# apt install fonts-wqy-microhei

root@acd322ec8e84:/usr/share/fonts/truetype/wqy# ls

wqy-microhei.ttc

-------------------------------------------------

 

对于用户界面设计来讲,为了提升交互体验,通常会使用特定的字体,而这些字体可能无法通过 apt 命令从 debian 软件源安装。这时候就需要手动导入字体文件。下面将介绍这一过程。演示的 Qt5 应用程序将使用小米字体,这是一个可以免费商用的字体。

 

根据这里的说明创建一个 QML C/C++ 工程,然后简单修改 Torizon Extension 自动生成的 cpp 和 qml 文件,增加中文显示内容。当然也可以直接将该示例工程导入后使用,或者对照修改。

 

Torizon Extension 提供丰富的功能令用户可以定制所需的 docker 容器。application.buildfiles 可以在构建容器的时候使用 COPY 或者 ADD 命令添加文件。将需要添加的文件复制到工程目录下的 appconfig_0 文件夹中。这里我们使用 MiSans-Regular.ttf 文件并将其重命名为 MiSans.ttf

TorizonQt容器中文显示_web1625.png 

 

 buildfiles 中配置COPY MiSans.ttf /usr/share/fonts/ttf/

TorizonQt容器中文显示_web1682.png 

 

 Qt 演示程序中我们使用了 qtquick-controls2 组件,因此在 extrapackages 中将其添加进来。

qml-module-qtquick2 qml-module-qtquick-window2 qml-module-qtquick-controls2

TorizonQt容器中文显示_web1825.png 

 

然后依次执行 Terminal → Run Task → build_debug 编译 Qt 应用。

TorizonQt容器中文显示_web1879.png    TorizonQt容器中文显示_web1884.png

 

最后按 F5 开启调试。最后在显示器可以看到运行的 Qt 程序。

TorizonQt容器中文显示_web1988.png

 

 

 

总结

 Torizon 的 Qt 应用容器中使用中文字体,对于 Qt 代码来是透明,也无需修改代码。用户只要将字体文件通过  Torizon Extension 导入到容器内即可。


作者: hai.qin_651820742, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1864768.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

给作者打赏,鼓励TA抓紧创作!

赞赏支持
点赞 8
赞赏0

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
8
1
2
3
4
5
6
7
8
9
0
关闭 站长推荐上一条 /6 下一条