魔改 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 哦!
关注公众号「高效程序员」👇,一起优秀!