HarmonyOS鸿蒙PC开源QT软件移植:基于 Qt Widgets 的网络调试助手工具
随着OpenHarmony生态向PC端扩展,网络调试工具成为开发者日常工作中不可或缺的工具。NetTool作为一款基于Qt Widgets的开源网络调试助手,支持TCP客户端、TCP服务器、UDP服务器等多种网络通信功能,非常适合移植到HarmonyOS PC平台。本文将详细介绍如何将NetTool移植到HarmonyOS PC环境,为开发者提供一个功能完善的网络调试工具。
更多交流学习,欢迎加入开源鸿蒙PC社区:https://harmonypc.csdn.net/
欢迎在PC社区平台申请新建项目:https://atomgit.com/OpenHarmonyPCDeveloper
移植成功的项目源码开源地址:https://atomgit.com/OpenHarmonyPCDeveloper/ohos_qt_nettool
NetTool在HarmonyOS PC端的优势
NetTool作为一款成熟的网络调试工具,其丰富的网络通信功能和直观的用户界面非常适合移植到HarmonyOS PC平台。
通过移植,NetTool将能够:
- 充分利用Qt Widgets:NetTool基于Qt Widgets模块,可以无缝适应HarmonyOS PC的桌面环境。
- 多种网络协议支持:支持TCP客户端、TCP服务器、UDP服务器等多种网络通信模式。
- 数据格式灵活:支持多种数据格式的发送和接收,满足不同调试需求。
- 跨平台一致性:保持与原版NetTool一致的用户界面和功能,减少学习成本。

通过移植,相信大家也能够理解如何基于Qt的Qt Widgets开发鸿蒙PC上的应用了。
至于界面和布局的开发还是用qtcreator这个IDE,跟之前的开发习惯一样,只是到最后多出来了一步使用devStudio打包环节。
移植成功的项目源码开源地址:https://atomgit.com/OpenHarmonyPCDeveloper/ohos_qt_nettool
一、环境搭建与配置
关于开发环境搭建,参见博文:
《HarmonyOS鸿蒙PC的QT应用开发:(一、开发环境搭建及第一个HelloWorld)》
《HarmonyOS鸿蒙PC的QT应用开发:(二、开发环境搭建及第一个HelloWorld)》
前置条件
- 安装DevEco Studio 5.0及以上版本
- 参照环境搭建已准备好开发环境
- 了解HarmonyOS应用开发基础
二、下载与准备NetTool源码
-
下载NetTool源码:在这里 https://gitcode.com/qq8864/nettool-hmos的Doc文件夹中存了份源码。
-
解压源码:将下载的源码包解压到一个工作目录,例如
E:\test\qt\nettool。
三、在QtCreator中配置鸿蒙的构建套件并编译源码
在QtCreator的IDE中,需要先配置好ohos的构建套件(关键操作)。
注: 这里是区别传统x86下的QT的开发和鸿蒙pc版的qt开发的关键所在,就是构建套件不一样而已。
在 HarmonyOS 上运行 Qt 应用,跟传统的PC上的QT应用不同。
传统的PC上的QT应用是使用QtCreator开发完成后,直接编译为可执行文件exe.。 而鸿蒙版QT的开发流程,则是使用鸿蒙版QT的SDK和qmake工具链(鸿蒙qt的专属构建套件),最终的编译产物为.so动态链接库.。
鸿蒙版qt的专属构建套件安装,详细步骤参考博文:
《HarmonyOS鸿蒙PC的QT应用开发:(二、开发环境搭建及第一个HelloWorld)》


这里生成的构建产物不是exe可执行文件,而是一个.so的动态库。之后,还需要鸿蒙的QT工程项目模版,把这里生成的so库加载进去,将应用编译打包为hap或app包。所以有了下面的步骤,创建HarmonyOS项目工程。
四、创建HarmonyOS项目工程
可以在以下地址获取最新的用于构建最终 OpenHarmony Qt 应用程序的 DevEco 项目模板,这将用于在 HarmonyOS 设备上运行 Qt 应用程序。
获取最新模版地址: http://codereview.qtcompany.cn:29416/template/
1.将 DevEco 项目模板放入已知位置
我们将其命名为 nettool-hmos
转到文件夹 nettool-hmos\entry 并创建一个文件夹 nettool-hmos\ entry\libs\arm64-v8a,前面步骤的so库的构建产物和依赖的Qt的 so库,需要放置在此目录下。

2. 修改APP_LIBRARY_NAME的名字
修改nettool_ohos\entry\src\main\ets\commonQtAppConstants.ets文件中的APP_LIBRARY_NAME为nettool.so

点击"Sync Now"同步工程。
3 拷贝QT依赖库文件
拷贝库文件:将环境准备篇介绍的编译好的Qt SDK下的相关QT库依赖文件,拷贝到项目的entry/libs/arm64-v8a目录下。
我的编译好的Qt SDK路径如下:

五、构建与运行
1. 命令行构建
# 清理构建
hvigorw clean
# 构建项目
hvigorw assembleHap
# 安装到设备
hdc install entry/build/default/outputs/default/entry-default-signed.hap
2. DevEco Studio构建
- 在DevEco Studio中,点击"Build" → “Build HAP(s)”
- 等待构建完成,确保无编译错误。

3. 运行应用
由于目前HarmonyOS PC模拟器可能尚未普及,建议在真实PC设备上运行。
-
真实PC设备
- 准备已刷入HarmonyOS PC版的设备
- 通过USB连接设备
- 在DevEco Studio中选择目标设备
- 点击运行按钮,应用将自动安装并启动
-
远程调试
- 配置PC设备的远程调试选项
- 在DevEco Studio中配置远程连接
- 部署并运行应用
六、功能特性说明
NetTool移植到HarmonyOS PC平台后,完整具备以下核心功能:
1. TCP客户端
- 支持连接到远程TCP服务器
- 支持发送和接收文本数据
- 实时显示连接状态
2. TCP服务器
- 支持创建TCP服务器,监听指定端口
- 支持多客户端连接管理
- 支持向指定客户端发送数据
3. UDP服务器
- 支持UDP数据的接收和发送
- 支持指定目标IP和端口发送数据
- 实时显示接收到的UDP数据
4. 数据管理
- 支持自定义发送数据
- 支持保存发送历史
- 支持多种数据格式显示(文本、十六进制)
5. 用户界面
- 基于Qt Widgets设计,操作简单直观
- 标签页式布局,功能模块清晰
- 支持中英文界面切换
七、调试与问题解决(FAQ)
1. 常见问题解决
-
网络权限问题:在
module.json5中申请网络权限:"requestPermissions": [ { "name": "ohos.permission.INTERNET" } ] -
库文件缺失:确保所有Qt库文件已正确拷贝到libs目录
-
架构不匹配:确认设备架构与abiFilters配置一致
运行效果截图

当前存在的问题:虽然功能正常,但界面有些失真,尤其是字体和按钮大小,当前显示的字体明显偏小,跟最前面截图的效果差异明显。这个猜测属于屏幕分辨率的问题需要自行适配,非移植的问题。
2.显示问题解决
从上面的真机运行效果上看,界面明显受显示分辨率的影响,被缩放了。显示效果严重失真。这里分享个小妙招,只需稍微改动下源码,在main函数前增加几行代码解决:
#include <QApplication>
int main(int argc, char *argv[])
{
//自适应高分辨率(DPI),解决界面受分辨率影响导致失真问题
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling, true);
QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps, true);
//QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough); //这个QT5.14及之后才支持(设置舍入策略(防止 150% 变成 200%))
QApplication a(argc, argv);
return a.exec();
}
增加这个之后真机运行效果:

八、未来展望
NetTool在HarmonyOS PC平台的应用开发具有重要价值:
- 开发者工具生态:丰富HarmonyOS PC平台的开发者工具,提高开发效率
- 网络调试标准化:为HarmonyOS应用开发提供标准的网络调试工具
- 跨设备调试:结合HarmonyOS分布式能力,实现跨设备网络调试
- 生态建设:推动HarmonyOS PC应用生态的快速成熟
随着HarmonyOS PC生态的完善,NetTool将成为开发者网络调试的重要工具,为HarmonyOS应用开发提供有力支持。
欢迎加入开源鸿蒙开发者社区交流:https://harmonypc.csdn.net/
更多推荐



所有评论(0)