尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Notepad-- 插件开发教程:三步写出你的第一个编辑器扩展

Notepad-- 插件开发教程:三步写出你的第一个编辑器扩展 Notepad-- 插件开发教程三步写出你的第一个编辑器扩展【免费下载链接】notepad--一个支持windows/linux/mac的文本编辑器目标是做中国人自己的编辑器来自中国。项目地址: https://gitcode.com/GitHub_Trending/no/notepad--你发现 Notepad-- 这款跨平台文本编辑器又快又稳但想加一个自定义批量转换功能时菜单里却没有现成选项。插件系统正是官方出口每个插件就是一个动态库挂进编辑器菜单会写几行 C 就能开发出跑在 Windows、Linux、Mac 三端上的自有功能。把自己的功能挂进编辑器菜单想给编辑器加当前文件批量转大写一键生成文件头这类功能最快的路子不是改主程序而是做成插件——编辑器的插件菜单是动态生成的插件只需注册名称与入口。插件管理器 src/pluginmgr.cpp 启动时扫描插件目录逐个调用插件的识别函数加载成功的才会生成菜单项。Notepad-- 编辑器主界面插件与内置功能共用同一套菜单体系四步编译加载示例插件仓库自带可运行的示例 src/plugin/helloworld/顶层 CMakeLists.txt 已通过add_subdirectory把它纳入构建编译主程序时插件会一并产出git clone https://gitcode.com/GitHub_Trending/no/notepad-- cd notepad-- mkdir build cd build cmake .. make -j4启动编辑器后菜单里会多出 Hello World Plug点一下弹出带大小写转换按钮的演示对话框——插件已跑通。这个对话框通过主程序传入的QsciScintilla*指针直接操作当前编辑控件这正是插件开发最核心的模式。看懂插件的两个导出函数与加载机制插件本质是共享库导出两个 C 函数extern C包裹才能被识别extern C { NDD_EXPORT bool NDD_PROC_IDENTIFY(NDD_PROC_DATA* pProcData); NDD_EXPORT int NDD_PROC_MAIN(QWidget* pNotepad, const QString strFileName, std::functionQsciScintilla*() getCurEdit, std::functionbool(int,void*) pluginCallBack, NDD_PROC_DATA* pProcData); }需要理解的维度有三个识别——NDD_PROC_IDENTIFY填写NDD_PROC_DATA包括插件名、版本、作者和m_menuType是否创建二级菜单返回false即不被加载入口——NDD_PROC_MAIN在菜单点击时被调用参数里带着主窗口指针和编辑控件获取器回调——通过pluginCallBack可以反向调用主程序的新建文件等功能功能集按需扩展。插件 API 定义了这些接口helloworldexport.cpp 的示例实现是最好的参照。插件菜单与编辑、查找等内置菜单并列集成快速修复插件加载的三种常见报错症状启动后看不到插件菜单→ 编译出的动态库没放进插件目录或目标类型不是SHARED→ 检查 helloworld 目标产出的库文件类型与输出路径。症状点击菜单崩溃或无响应→ 导出接口签名不一致、没包extern C或漏了NDD_EXPORT导出宏 → 对照helloworldexport.cpp的声明逐行核对。症状CMake 报找不到 Qt5→ 项目依赖Core Gui Widgets Concurrent Network PrintSupport XmlPatterns等 Qt5 组件 → 安装完整 Qt5 开发环境后重新执行cmake ..。进阶延伸从菜单按钮到完整编辑器扩展搜索、替换与结果列表等功能区插件同样可通过回调机制触达只想操作文本getCurEdit拿到的编辑控件指针就够用了需要更复杂的能力时仓库里还有两份资源值得翻src/extlexermanager.cpp提供自定义语言高亮的扩展入口根目录的插件编程开发说明文档给出完整接口约定——先读文档再动手能少走大半弯路。【免费下载链接】notepad--一个支持windows/linux/mac的文本编辑器目标是做中国人自己的编辑器来自中国。项目地址: https://gitcode.com/GitHub_Trending/no/notepad--创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表