C++实现自己的插件框架 基于QtCreator源码裁剪

5 篇文章 0 订阅
3 篇文章 0 订阅

QtCreator2.5.2插件系统裁剪(requiresQt4.7.4 orlater

前言:一般的系统(非插件系统),在发布之后如果还需要修改,必须重新编译后发布。然而我们总有一些特殊的需求,要求已发布的系统能够动态的修改,而插件系统,可以很好的解决这个问题。实现插件系统首先要预先定义好系统的扩展接口,插件由其他开发人员根据系统预定的接口编写扩展功能。插件都是以一个独立文件的形式出现的。系统并不知道插件的具体功能,仅仅是为插件留下预定义的接口,系统启动的时候根据插件的配置寻找插件,根据预定的接口把插件挂接到系统中。Eclipse就算不是插件的鼻祖,应该也算是它将插件开发推向高潮吧。

具体细节可以参考一下文章:

由于Qt是开源,接触过QtCreator的朋友应该也发现了QtCreator本身也是一套基于插件系统开发的软件,并且源码在手,让我们在此基础上将其裁剪,拿出精髓部分,打造一个干净清爽的可直接用于项目的插件系统。

1.基础介绍

1)     Qmake是一个简化编译的工具,具体的介绍参考Qt帮助文档:

2.具体的裁剪过程

1)     首先我选择QtCreator2.5.2这个版本,应该算是Qt4.x较晚的版本了,因为Qt在新版本中大量使用了QBS进行编译(Qbs Manual),因此先从简单的下手,这个版本我在Qt4.8.2下操作。下载后解压出源码,这里提点注意,因为我自己也经常忘记,Qt的项目不要放在中文目录,不要放在带空格的目录,如果非要区分多个单词,用’_’、‘-’等连接。

2)     第一层目录只保留src、qtcreator.pri、qtcreator.pro和tests(这个如果不想写单元测试也删除了吧)其他都删除。

  • Qtcreator.pri修改其中的版本、名称等为自己的插件系统名称

下面粘贴部分修改内容:

  • QtCreator.pro,修改文件名称、删除没用的

3)     修改src/app文件夹

  • 只保留app.pro和main.cpp
  • App.pro中没用的东西删除或者注释,很多都是平台相关的资源
  • Main.cpp修改部分与QtCreator有关的路径变量等转为自定义的路径

 

4)     修改src/lib目录,只保留aggregation和extenstionsystem项目

  • 其中引用的pri等相关文件的名称修改为自定义的名称
  • 修改Src/Plugin目录,此目录中可全部删除,添加自己实现的插件

这里实现一个主程序窗口插件,以下为部分代码:

.h
classCoreGuiPlugin:publicExtensionSystem::IPlugin
{
        Q_OBJECT
public:
        CoreGuiPlugin();
    boolinitialize(constQStringList&arguments,QString*errorString);
        voidextensionsInitialized();
};
 
.cpp
boolCoreGuiPlugin::initialize(constQStringList&arguments,QString*errorString)
{
    Q_UNUSED(arguments);
    if(!ADLCoreGui::instance())
        errorString->append("ADLCoreGui'sinstance()failed!\n");
    ADLCoreGui::instance()->init();
    returntrue;
}
voidCoreGuiPlugin::extensionsInitialized()
{
    ADLCoreGui::instance()->getMainWindow()->show();
    return;
}

5)     删除src/share目录

6)     Src/shared目录只保留qtsingleapplication和qtlockedfile

7)     Src/tools只保留tools.pro且清空里面内容

8)     Src目录下的src.pro、QtCreatorlibrary.pri等修改文件中的一些变量和定义为自定义的名称即可

9)     编译通过之后运行程序如下:

至此已经完成插件系统的裁剪,在此基础上添加各种功能插件即可。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值