背景与概述
Notepad-- 是一个功能强大的开源文本编辑器,支持多种编程语言的语法高亮、插件扩展等功能。随着OpenHarmony生态向PC端扩展,将Notepad--移植到OpenHarmony PC环境上,不仅能够丰富鸿蒙生态的应用种类,还能为开发者提供一个实用的桌面级文本编辑工具。本文将详细介绍如何在OpenHarmony PC环境下移植Notepad--。
Notepad--(NDD)的开源地址:
https://gitcode.com/GitHub_Trending/no/notepad--

请注意:本文使用的Qt for OpenHarmony SDK由OpenHarmony SIG社区基于Qt 5.15独立开发和维护,非Qt官方版本。
- 社区项目地址:https://gitcode.com/openharmony-sig/qt
- SDK下载链接:https://gitcode.com/openharmony-sig/qt/releases
Notepad--在OpenHarmony PC端的优势
Notepad--作为一款成熟的开源文本编辑器,其丰富的功能和强大的可扩展性非常适合移植到OpenHarmony PC平台。通过移植,Notepad--将能够:
- 充分利用Qt Widgets:Notepad--主要基于Qt Widgets模块,可以无缝适应OpenHarmony PC的桌面环境。
- 语法高亮和插件支持:支持多种编程语言的语法高亮和动态插件加载,提高开发效率。
- 跨平台一致性:保持与原版Notepad--一致的用户界面和功能,减少学习成本。
环境搭建与配置
文档适用范围
- OpenHarmony API 15 (5.0.3) 及以上版本
- Qt for OpenHarmony (基于 Qt 5.15)
- DevEco Studio 5.0.5 及以上版本
前置条件
- 安装DevEco Studio 5.0.5及以上版本
- 下载并配置Qt for OpenHarmony SDK
- 了解OpenHarmony应用开发基础
1. DevEco Studio下载与安装
- 官方下载地址 :DevEco Studio官网
- 注意事项 :
- 推荐使用最新稳定版本以获得最佳兼容性。
- 历史版本可能不支持最新的OpenHarmony API,可通过官网指定页面获取。
- 具体安装步骤请参考鸿蒙官方安装教程。
2. Qt SDK下载与配置
本文假设您已完成基础环境搭建,包括:
- 安装DevEco Studio 5.0.5及以上版本
- 下载并配置Qt for OpenHarmony SDK
- 了解OpenHarmony应用开发基础
如未完成,请参考前文《QT开发鸿蒙移动应用:环境搭建及第一个HelloWorld程序》中的环境搭建部分。
下载与准备Notepad--源码
-
下载Notepad--源码:从Notepad--的官方仓库下载源码。
- GitCode地址 : Notepad-- GitCode
-
解压源码 :将下载的源码包解压到一个工作目录,例如
~/Projects/notepadqq。
创建OpenHarmony工程
1. 新建OpenHarmony工程
- 打开DevEco Studio,选择"Create Project"。
- 选择"Native C++"模板。
- 配置工程信息:
- Project Name :
NotePad-- - Bundle Name :
com.example.notepadqq - SaveLocation : 工程保存路径(如
~/Projects/notepadqq) - Compile SDK: 选择API 17或更高版本
- Model: 选择"Stage"
- Device Type: 选择"Tablet"或"2in1"
- Project Name :
2. 修改为OpenHarmony工程
修改工程级 build-profile.json5 文件:
json
"products": [
{
"name": "default",
"signingConfig": "default",
"compileSdkVersion": 17,
"targetSdkVersion": 17,
"compatibleSdkVersion": 17,
// ... 其他配置
}
]
点击"Sync Now"同步工程。
3. 工程配置调整
3.1 修改Native编译配置
在模块级build-profile.json5中配置Qt SDK路径和架构:
json
"externalNativeOptions": {
"path": "./src/main/cpp/CMakeLists.txt",
"arguments": "-DQT_PREFIX=/path/to/your/QtForOpenHarmony",
"abiFilters": ["arm64-v8a"] // PC设备通常使用64位ARM或x86架构
}
注意:根据实际PC设备架构调整abiFilters,可能为["arm64-v8a"]或["x86_64"]。
3.2 拷贝依赖文件
- 拷贝ets文件 :将Qt SDK下的
openharmony/qtbase目录内容复制到src/main/ets目录。 - 拷贝库文件 :将Qt SDK下的
plugins/platforms/libplugins_platforms_qopenharmony.so拷贝到libs/arm64-v8a目录下。 - 拷贝开源项目代码 :将notepadd--的开源代码放置在如下目录中。

3.3 配置UIAbility
在module.json5中配置PC应用入口:
json
{
"module": {
"name": "entry",
"type": "entry",
"srcEntry":"./ets/abilitystage/MyAbilityStage.ets" ,// 关键配置
// ...
"abilities": [
{
"name": "EntryAbility",
"launchType": "specified", // 关键配置
// ... 其他配置
}
]
}
}
修改和配置CMakeLists.txt
1. 修改CMakeLists.txt文件
将how_build目录下的目录下CMakeLists.txt文件拷贝出来,文件内容如下,针对鸿蒙PC的编译做些修改:
cmake
cmake_minimum_required(VERSION 3.16)
project(Notepad-- VERSION 1.22.0)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
list(APPEND CMAKE_FIND_ROOT_PATH ${QT_PREFIX})
find_package(QT NAMES Qt5 Qt6 REQUIRED COMPONENTS Core Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui Widgets Concurrent Network PrintSupport XmlPatterns)
# qscint 关键依赖库
add_subdirectory(${PROJECT_SOURCE_DIR}/src/qscint)
# 插件库包含
# helloworld 动态插件库
add_subdirectory(${PROJECT_SOURCE_DIR}/src/plugin/helloworld)
# win下需要开启UNICODE进行支持TCHAR
if(CMAKE_HOST_WIN32)
add_definitions(-D_UNICODE -DUNICODE)
endif()
if(${PLUGIN_EN})
if(${PLUGIN_EN} STREQUAL on)
add_definitions(-DNO_PLUGIN=1)
endif(${PLUGIN_EN})
endif()
file(GLOB UI_SRC ${PROJECT_SOURCE_DIR}/src/*.ui)
set(UI_SRC ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/cceditor/ccnotepad.ui)
aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC)
aux_source_directory(${PROJECT_SOURCE_DIR}/src/cceditor SRC)
if(CMAKE_HOST_WIN32)
add_executable(${PROJECT_NAME} WIN32 ${SRC} ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/RealCompare.qrc)
else()
add_library(${PROJECT_NAME} SHARED ${SRC} ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/RealCompare.qrc)
endif()
target_include_directories(${PROJECT_NAME} PRIVATE
${PROJECT_SOURCE_DIR}/src
${PROJECT_SOURCE_DIR}/src/cceditor
${PROJECT_SOURCE_DIR}/src/qscint/src
${PROJECT_SOURCE_DIR}/src/qscint/src/Qsci
${PROJECT_SOURCE_DIR}/src/qscint/scintilla/src
${PROJECT_SOURCE_DIR}/src/qscint/scintilla/include
${PROJECT_SOURCE_DIR}/src/qscint/scintilla/lexlib
${PROJECT_SOURCE_DIR}/src/qscint/scintilla/boostregex
)
target_link_libraries(${PROJECT_NAME} PRIVATE
qscint
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Gui
Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::Concurrent
Qt${QT_VERSION_MAJOR}::Network
Qt${QT_VERSION_MAJOR}::PrintSupport
Qt${QT_VERSION_MAJOR}::XmlPatterns
# 链接鸿蒙平台插件
${QT_PREFIX}/plugins/platforms/libplugins_platforms_qopenharmony.so
)
if(CMAKE_HOST_UNIX)
install(
TARGETS ${PROJECT_NAME}
DESTINATION "bin"
)
install(DIRECTORY ${PROJECT_SOURCE_DIR}/src/linux/usr
DESTINATION "/")
include(${PROJECT_SOURCE_DIR}/cmake/deb_package_config.cmake)
include(CPack)
elseif(CMAKE_HOST_WIN32)
install(TARGETS ${PROJECT_NAME}
DESTINATION "/")
install(DIRECTORY ${PROJECT_SOURCE_DIR}/build/bin/
DESTINATION "/")
# 设置软件版本
set(CPACK_PACKAGE_NAME "NotePad--")
set(CPACK_PACKAGE_DESCRIPTION "NotePad--")
set(CPACK_PACKAGE_COPYRIGHT "Copyright (c) 2023")
set(CPACK_PACKAGE_VERSION "1.22.0")
set(CPACK_PACKAGE_VERSION_MAJOR "1")
set(CPACK_PACKAGE_VERSION_MINOR "22")
set(CPACK_PACKAGE_VERSION_PATCH "0")
include(${PROJECT_SOURCE_DIR}/cmake/nsis_package_config.cmake)
include(CPack)
endif()
2. 配置依赖库
确保所有依赖库已正确添加到项目中,特别是 qscint 和 helloworld 插件库。这些库可以通过 add_subdirectory 指令集成到项目中。
3. 定义平台特定配置
根据不同的开发平台(Windows 和 Mac),定义相应的编译选项和资源文件。例如,在Windows平台上开启UNICODE支持,在Unix平台上指定安装路径。
构建与运行
1. 构建应用
- 在DevEco Studio中,点击"Build" → "Build HAP(s)"
- 等待构建完成,确保无编译错误

2. 运行应用
由于目前鸿蒙PC模拟器可能尚未普及,建议在真实PC设备上运行。
-
真实PC设备
- 准备已刷入OpenHarmony PC版的设备
- 通过USB连接设备
- 在DevEco Studio中选择目标设备
- 点击运行按钮,应用将自动安装并启动
-
远程调试
- 配置PC设备的远程调试选项
- 在DevEco Studio中配置远程连接
- 部署并运行应用
3. 应用效果
应用启动后,将显示一个标准的桌面窗口,包含:
- 标题栏(可最小化/最大化/关闭)
- 中央内容区域(文本编辑框)
- 底部状态栏
- 完整的菜单栏、工具栏(可根据需要添加)
1. 常见问题解决
- 库文件缺失 :确保所有依赖库已正确拷贝到
libs目录 - 架构不匹配 :确认设备架构与
abiFilters配置一致 - 权限问题 :在
module.json5中申请必要的PC应用权限
2. 性能优化建议
- 懒加载控件:大型应用可考虑动态加载UI组件
- 资源管理:合理管理图片、字体等资源
- 事件处理:优化耗时操作,避免阻塞UI线程
未来展望
Notepad--在OpenHarmony PC平台的应用开发具有重要价值:
- 企业级应用迁移:大量现有Qt桌面应用可平滑迁移至OpenHarmony PC
- 生产力工具开发:利用Qt Widgets丰富控件库开发办公、设计等专业软件
- 混合开发模式:结合Qt Quick和Qt Widgets,兼顾传统界面与现代UI需求
- 生态建设:推动OpenHarmony PC应用生态的快速成熟
随着OpenHarmony PC生态的完善,Notepad--将成为连接传统桌面应用与新一代操作系统的重要桥梁,为开发者提供高效、可靠的PC应用开发解决方案。