首页 > 其他 > 详细

QT插件使用

时间:2016-09-15 13:37:08      阅读:179      评论:0      收藏:0      [点我收藏+]

1基本插件制作流程

      1) 定义接口。接口定义为抽象基类,如IPluginInterface,实现高度封装。定义的头文件在最后需要通过Q_DECLARE_INTERFACE来唯一标识该接口,即通过一个全局ID绑定接口。比如:

Q_DECLARE_INTERFACE(IPluginInterface, “com.blog.test.plugin.test/1.0”)

      2) 实现接口。PluginInterfaceImp类通过继承自抽象基类IPluginInterface (同时继承QObject),实现了接口方法。PluginInterfaceImp类需要申明两个东西:

Q_OBJECT

Q_INTERFACES(PlugInterface)

      这样能保证接口具备QT的基本功能机制,比如信号槽、接口识别等。

      3) 最后,在适当的地方申明Q_EXPORT_PLUGIN2,其第二个参数是之后在加载该插件得到的对象的类名,比如PluginInterfaceImp。

2项目中应用

      项目中使用QT的插件,一般会不止一个,而插件作为QT独特的接口库使用方法,可以由统一的使用框架进行管理,方便使用。基本框架图如下:

            技术分享

      PluginManager:负责插件初始化和加载。

      其中、插件初始化会对指定目录下的文件通过QLibrary::resolve进行加载。这样就获得了一个插件模块对象列表,可以存放到一个map中,通过ID来索引,值为IPluginFactory指针表示的PluginFactory对象。

      加载则是获取指定ID的PluginFactory对象,然后通过GetPluginObj()获得实际插件对象。

      IPluginFactory:插件对象统一对外接口,其派生类实例对象对应着某个插件,因此能在派生类对象中实现GetPluginID()和GetPluginObj()方法,得到最终的插件对象。

      这样,制作好的插件放在项目制定文件夹后,就可以在项目中使用这些插件了:

      1)  初始化PluginManager:: Instance().Init();

      2) 加载插件LoadPlugin(id);

 

QT插件使用

原文:http://www.cnblogs.com/PattonCCNU/p/5874642.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!