魔改 Qt Creator 插件框架(附源码)

高效程序员

共 1352字,需浏览 3分钟

 ·

2021-08-25 02:25

星标/置顶 公众号👇硬核文章第一时间送达

几年前,我曾写过一些插件相关的文章,其中最成体系的当属 CTK 系列,一共 18 个章节,从 0 到 1 讲述了模块化编程在 C++/Qt 中的实际应用。

很多小伙伴曾学过这个框架/库,但真正用起来的没有几个,究其原因有如下几个:


  • 编译不过(还没开始就结束了

  • 搞不懂基本原理

  • 不知道如何应用

  • 认为没卵用(QTC 扩展系统的强化版,你说有用吗?)

  • ......


一句话:很难学!的确是这样,因为我也经历过这个过程,所有的这些经验积累,都是我之前从 OSGI 那里一步步摸索,总结而来的!


所以如果要学会它,需要花费不少精力,当然了,同时你的内功也会大大提升!想想看,如果大家都学会了,怎么体现你的优秀!


话不多说,无论是想研究 CTK 还是其他插件框架,建议先从 Qt Plugin 开始,然后是 QTC 的 ExtensionSystem(官方术语,你也可以认为是插件系统),下面就来扒一扒这个 ExtensionSystem 的源码。



1

QTC 源码


如果要推荐 Qt 项目,我一定首选 QTC:https://github.com/qt-creator/qt-creator,Qt 官方开发的 IDE、良好的组织结构、优秀的代码设计、以及编码风格,我想没有比这个更值得深入研究的了!



虽然 QTC 中的代码很多,但要剥离插件框架其实也不难。进入 QTC 源码,找到 ExtensionSystem 就可以了,它是一个库,自身又依赖于 utils 库。所以如果想在自己的项目中使用 QTC 的插件框架,必须得同时把这两个都扒下来!


utils 里面是一些算法、性能诊断相关的功能,如果不想要它,只想要 ExtensionSystem,可以把这部分裁减掉,再魔改一下!




2

编写 QES


为了介绍和使用 ExtensionSystem,我编写了一个简单的程序,名为 QES(Qt ExtensionSystem 的缩写)


这里面有插件的整体加载流程,以及两个测试插件 - coreplugin 和 helloworld。通过这个示例程序,你可以很容易地将 ExtensionSystem 移植到自己的项目中,并且能够快速地编写自己的插件。



如果对 QES 感兴趣,想学习源码,请访问我的 github:https://github.com/Waleon/QES不要忘了给个 Star 哦!



往期推荐




☞ 专辑 | 趣味设计模式
☞ 专辑 | 音视频开发
☞ 专辑 | C++ 进阶
☞ 专辑 | 超硬核 Qt
☞ 专辑 | 玩转 Linux
☞ 专辑 | GitHub 开源推荐
☞ 专辑 | 程序人生


关注公众「高效程序员」👇一起优秀!

回复 “入群” 进技术交流群,回复 “1024” 获取海量学习资源。
浏览 157
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报