一、插件的概念
插件的本质其实就是动态库,或者说是一种升级版的动态库。动态库的功能就是使用dll去保存有着功能的API,让其他人可以使用你封装的函数,且在后续动态库的迭代更新时,只需要将dll更新即可,但是如果在你的项目中包含了动态库的lib,而却缺少对应库的dll文件时,软件则无法使用。而插件在此基础上多了一个功能正式在你不使用该库的函数时,可以不需要去包含对应库的dll文件,不会影响软件的其他功能使用。
插件的优点:
1、在不使用插件内容时,可以不需要去包含插件动态库文件。
2、便于拓展更新、低耦合、面向接口,对于大型系统来说,可以多人同时开发,互不干扰。
二、插件的框架
要实现一个插件的框架比如包含如下三项
1、插件的定义。此部分为插件的基类,里面需包含和你导出类一样的所有函数,此时导出的函数才可正常使用。
2、导出类。此部分为继承插件基类的子类,里面包含了具体在外面使用的函数及其具体功能的实现。
3、测试demo。这部分为测试插件功能是否正常。
三、示例用法
1、插件的定义
此类需自定义插件ID,并声明告诉QT为插件的纯虚类,并且使用虚函数声音一下需要导出的函数。
2、导出类
此类为插件的导出类,需要对插件基类定义的虚函数进行重写实现。
3、测试类
在使用插件的时候,一般将其放于子文件夹中,使用遍历该文件夹的方式去将子文件夹中的全部文件加载,若插件存在则会被成功创建,若缺少插件文件,则该插件的函数无法使用,但不影响软件的其他使用。
插件使用成功。