c++制作QT插件

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);

 

转载于:https://www.cnblogs.com/PattonCCNU/p/5874642.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一款跨平台的应用程序开发框架,而Qt件化框架则是Qt框架的一个重要组成部分。Qt件化框架允许开发者将功能模块以件的形式集成到应用程序中,以达到更好的代码复用和可扩展性。 Qt件化框架的核心是Qt件接口,该接口定义了件的生命周期和与宿主应用程序的交互方式。开发者可以按照Qt件接口的规范开发自定义件,然后通过件管理器将件加载到应用程序中。 在件管理器的帮助下,应用程序可以动态加载和卸载件,从而实现灵活的功能扩展。开发者可以根据需要选择加载特定件,也可以根据不同的平台或运行时条件加载不同的件。 Qt件化框架的另一个重要特性是件之间的通信。件可以通过信号和槽机制、共享对象或者其他通信方式进行交互,以实现复杂的功能拓展和协同工作。 使用Qt件化框架可以带来许多好处。首先,件化可以提高代码的模块化和重用性,减少重复代码的编写。其次,件可以在运行时动态加载和卸载,大大提升了应用程序的灵活性和可扩展性。此外,件化还可以简化应用程序的开发和维护过程,使开发者能够更加专注于核心功能的实现。 总的来说,Qt件化框架为开发者提供了一种强大且灵活的方式来扩展和定制Qt应用程序。通过合理地使用件化框架,可以有效地提高应用程序的性能、可维护性和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值