2026年3.31日,QT官方正式发布鸿蒙版QT。本次开源发布正式推出面向鸿蒙系统平板和PC设备的Qt 5.12.12 LTS 适配版本,在完整保留 Qt 5.12.12 核心能力(含界面渲染、信号槽机制、跨平台 I/O、网络通信及数据库模块)的基础上,深度适配鸿蒙系统架构。本版本可降低开发者跨平台移植成本,加速 Qt 与鸿蒙生态融合,助力多场景鸿蒙应用高效开发。

QT官方鸿蒙版开源地址https://wiki.qt.io/Qt5.12.12_Open_Source_Release_for_HarmonyOS_zh

QT官方文档地址https://wiki.qt.io/Qt_for_OpenHarmony/zh

在这里插入图片描述

在 HarmonyOS 上运行 Qt 应用,跟传统的PC上的QT应用不同。

传统的PC上的QT应用是使用QtCreator开发完成后,直接编译为可执行文件exe.。 而鸿蒙版QT的开发流程,则是使用鸿蒙版QT的SDK和qmake工具链,最终的编译产物为.so. 之后呢还需要鸿蒙的QT工程项目模版,把so加载进去,将应用编译打包为hap或app包。

本文接上篇《HarmonyOS鸿蒙PC的QT应用开发:(一、开发环境搭建及第一个HelloWorld)》

在上一篇章中,已经准备好了环境且编译出了QT的鸿蒙版的SDK。

本文介绍下鸿蒙版QT的第一个HelloWorld。为了简单起见,直接使用Qt自带的demo项目计算器calculator为例。

我的calculator项目demo源码位于:D:\Qt\Qt5.14.2\Examples\Qt-5.14.2\script\calculator目录下。

一、在 Windows 中为 HarmonyOS 构建 Qt 应用程序

以下内容的前提:已经安装了Qt 5.12 及以上(带Qt Creator的IDE)、DevEco studio、上一篇介绍的编译好的HarmonyOS版本的QT库,已经有HarmonyOS的设备。

:后续为了方便使用,这个QT库可以编译好后提交到git仓库方便使用,其他小伙伴就不用再折腾编译QT源码了。

如,我编译的QT库路径及内容如下:

在这里插入图片描述
在这里插入图片描述

注意 Qt5 构建 + 多个选项,目前 Arch 是 arm64-v8a。

在 Qt Creator 中为 HarmonyOS 创建开发工具包

Qt Creator 前往编辑 → 偏好设置 → 构建套件

1、配置 Qt 版本

转到 Qt版本选项卡,单击添加按钮

在这里插入图片描述

转到安装 Qt 5.12.12 for OHOS 的文件夹(应安装在 PREFIX 指定的路径中),然后转到 bin 文件夹,选择 qmake 应用程序并单击打开。例如,之前使用 PREFIX=C:\Qt\qt-5.12.12-ohos 编译了 Qt 源代码,因此 qmake 将位于 C:\Qt\qt-5.12.12-ohos\bin\qmake。将名称设置为 Qt %{Qt:Version} for OHOS。此时,应该有信息表明没有可以为此 Qt 版本生成代码的编译器。

2、配置编译器

转到“编译器”选项卡。单击“添加”按钮,然后选择“自定义”→“C”
将名称设置为 OHOS Clang。

假设你已按照说明从源代码开始构建 Qt 5.12.12 for OHOS,那么应该已经安装了 llvm-mingw。如果没有,请按照 MinGW 工具链安装步骤执行Qt for HarmonyOS/zh#准备构建环境。

将 Make 路径设置为 MinGW 工具链附带的 mingw32-make.exe 可执行文件。它应位于 \bin\mingw32-make.exe。不要忘记将 替换为实际路径。
将 ABI 更改为arm - linux - generic - elf - 64bit

在这里插入图片描述

对于 c++ 编译器,请按照上述步骤操作。不过,这次请确保将名称设置为 OHOS Clang++,并在编译器路径中选择 clang++.exe。

在这里插入图片描述

3、配置构建套件

转到 构建套件选项卡,单击添加按钮
将名称设置为 OHOS Clang

将 Sysroot 设置为 D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native\sysroot。在 Compiler 部分,选择之前配置的 C(OHOS Clang) 和 C++(OHOS Clang++) 编译器。

在 Qt 版本中选择之前为 OHOS 配置的 Qt 5.12.12。
将 Qt mkspec 设置为 ohos-clang。

完整的套件应如下所示:

在这里插入图片描述

4、在 Qt Creator 中设置所需的环境变量

转到编辑→首选项→环境→系统,然后单击环境部分中的Change…按钮。
通过添加一行 NATIVE_OHOS_SDK=D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native 添加新的环境变量

在这里插入图片描述
注意: 踩坑点,如果你使用的是Qt Creator 的5.14或者5.15等高级版本,没有图上的环境变量一项。

这时候你可以把其配置为windows的环境变量亦可。

如下图所示:

在这里插入图片描述

5、获取 DevEco 项目模板

可以在以下地址获取最新的用于构建最终 OpenHarmony Qt 应用程序的 DevEco 项目模板。这将用于在 HarmonyOS 设备上运行 Qt 应用程序。

获取最新模版: http://codereview.qtcompany.cn:29416/template/

将 DevEco 项目模板放入已知位置。我们将其命名为
转到文件夹 \entry 并创建一个文件夹 \ entry\libs\arm64-v8a

二、编译一个简单的 Qt 项目

我的calculator项目demo源码位于:D:\Qt\Qt5.14.2\Examples\Qt-5.14.2\script\calculator目录下。

直接使用Qt Creator可以打开工程。将这个calculator工程源码拷贝出来。

然后在 QtCreator 中,单击文件→打开文件或项目,然后转到 qt_creator_projects\calculator 并选择 calculator.pro。

在“配置项目”选项卡中,选择OHOS Clang 套件并单击“配置项目”按钮。

通过单击Build → Build Project “calculator”来触发编译,或者使用快捷键:Ctrl+B。项目应该可以顺利编译。

在这里插入图片描述

能够在 qt_creators_projects\build-calculator-OHOS_Clang-Debug 文件夹中 找到已编译的libcalculator.so文件。

在这里插入图片描述
在这里插入图片描述

三、在鸿蒙PC上运行 Qt for OpenHamony 应用程序

1. 将上一步中的 libcalculator.so 文件复制的到\entry\libs\arm64-v8a 文件夹中。

然后将所依赖的qt库从 \lib\ 复制到 \entry\libs\arm64-v8a\文件夹下。

例如,对于 libQt5Widgets.so 库,它的复制方法如下(Powershell):

Copy-Item "<qt-install-path>\lib\libQt5Widgets.so" -Destination "<deveco-project>\entry\libs\arm64-v8a\"

类似地,可以找到 OHOS qpa 插件的所有依赖项,以确保拥有所有必要的库。

2. 接下来需要修改 ets 中的初始加载

一旦复制了所有库,我们就可以修改 ets源代码。打开文件 <deveco-project>\entry\src\main\ets\common\QtAppConstants.ets。将 APP_LIBRARY_NAME 变量更改为我们要使用的库的名称(libcalculator.so):
在这里插入图片描述

3. 构建并运行应用程序

确保设备已连接。连接后,它应该在 DevEco Studio 中可见。
在这里插入图片描述
然后添加签名配置,打开 file–project structure–signing configs,勾选所有项,点击OK。(测试期间可以使用自动签名)

在这里插入图片描述
在 DevEco Studio 中选择设备后,可以直接构建并运行应用程序:

在这里插入图片描述

四、常见问题及解决(FAQ)

按照上面步骤一般很顺利。这里容易踩的一个坑:漏掉了libqohos.so这个库。则会运行起来直接崩溃。只记得添加QT库的依赖,很容易漏掉这个。我就踩了这个坑,导致运行就崩溃。

load libqohos.so failed, namespace=ndk no inherits, errno=2

在这里插入图片描述
这个库还比较大,有一百多兆大小。真希望它能打包到鸿蒙PC的系统里。否则,每个Qt的APP,都多了一百多兆谁能受得了。

在这里插入图片描述
在这里插入图片描述

最后,欢迎加入开源鸿蒙开发者社区交流:https://harmonypc.csdn.net/

附录:延伸阅读

以下链接供查阅嵌入式 UI 扩展与 HarmonyOS Ability 相关内容:

  1. HarmonyOS 嵌入式 UI 扩展组件实战 - 博客园

  2. HarmonyOS 应用开发中 EmbeddedUIExtensionAbility:跨进程 UI 嵌入 - SegmentFault

  3. 知乎专栏

  4. https://wiki.qt.io/Qt_for_OpenHarmony/zh?login=from_csdn

  5. https://wiki.qt.io/Qt5.12.12_Open_Source_Release_for_HarmonyOS_zh

官方文档请优先参考:HarmonyOS 开发者官网

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐