1、简介

QtCreator使用插件架构,方便扩展。它的核心是插件管理,主类是PluginManager。
下面是翻译src\libs\extensionsystem\pluginmanager.cpp中关于插件的一些说明,后续会详细分析插件管理的代码。

2、名字空间、主要类介绍

插件使用的名字空间是namespace:ExtensionSystem:它提供了属于核心插件系统的类。ExtensionSystem包含插件管理器及其支持类,以及必须由插件提供者实现的IPlugin接口。

class ExtensionSystem::PluginManager:主类
PluginManager类实现了核心插件系统,包括对插件本身以及它们的状态、生命周期、注册的对象的管理。

3、插件

插件由XML描述符文件和包含Qt插件的库组成它必须派生自IPlugin类,并且IID为"org.qt-project.Qt.QtCreatorPlugin"。
插件管理器通过路径列表,以搜索插件、检索关于这些插件状态的信息并加载它们。通常,插件管理器只需要一个,因此应用程序中创建一个PluginManager实例并启动加载。
加载插件的步骤:设置插件路径列表、尝试加载所有插件:
PluginManager::setPluginPaths(QStringList(“plugins”));
PluginManager::loadPlugins(); // try to load all the plugins

此外,还可以直接访问插件规范(描述文件中的信息)、插件实例(通过PluginSpec)及其状态。

4、对象池

【Qt】通过QtCreator源码学习Qt(四):插件管理PluginManager相关推荐

  1. 【Qt】通过QtCreator源码学习Qt(一):pro文件

    1.学习目的 学习pro文件的语法规则,这在跨平台项目中会经常用到.和条件编译相似,在pro中可以根据平台选择不同的编译模块.文件,还可以向源码中传递变量等. 2.学习方法 通过学习QtCreator ...

  2. 【Qt】通过QtCreator源码学习Qt(十二):Q_D和Q_Q指针(简称“d指针”)详解

    1.Q_D和Q_Q指针(简称"d指针")简介 参考博客: https://www.devbean.net/2016/11/qt-creator-source-study-07/ h ...

  3. 【Qt】通过QtCreator源码学习Qt(五):QLoggingCategory管理、分类、过滤打印信息

    1.QLoggingCategory简介 在QtCreator源码中新学到一个类QLoggingCategory. QLoggingCategory可以控制打印输出类别和区域.方便在调试时,过滤掉不关 ...

  4. 【Qt】通过QtCreator源码学习Qt(二):跨平台编程

    1.Qt对当前平台的判断 在qsystemdetection.h中根据宏定义来判断当前的操作系统,常用的操作系统如下: Q_OS_WIN.Q_OS_LINUX.Q_OS_MAC.Q_OS_UNIX q ...

  5. 【Qt】通过QtCreator源码学习Qt(十一):Utils::Icon,根据不同主题、不同状态变换图标

    1.简介 在QtCreator中Utils::Icon封装的图标可以根据主题变换,还可以设置不同状态下的图标的颜色.不同状态下的颜色变换,由QIcon::addPixmap函数实现: void QIc ...

  6. 【Qt】通过QtCreator源码学习Qt(九):容器算法总结

    一.简介 本节总结QtCreator中封装的容器算法接口,源码文件的路径src/libs/utils/algorithm.h. 算法接口包括:判断.查找.删除.统计.排序.转换.拆分.过滤 二.算法源 ...

  7. 【Qt】通过QtCreator源码学习Qt(三):linux平台的信号、程序崩溃处理

    崩溃处理设置:CrashHandlerSetup 1.原理 在堆中为信号处理函数分配一块区域,作为该函数的栈使用,当系统默认的栈空间用尽时,调用信号处理函数使用的栈是在堆中分配的空间,而不是系统默认的 ...

  8. 【Qt】通过QtCreator源码学习Qt(七):插件管理类简介

    一.名字空间:ExtensionSystem ExtensionSystem命名空间提供了属于核心插件系统的类. ExtensionSystem包含插件管理器及其支持类,以及必须由插件提供者实现的IP ...

  9. 【Qt】通过QtCreator源码学习Qt(十):多国语言支持

    1.获取系统支持的语言 QStringList uiLanguages;uiLanguages = QLocale::system().uiLanguages(); 2.从设置中获取想要显示的语言,尝 ...

最新文章

  1. 残差平方和ssr的计算公式为_如何为你的回归问题选择最合适的机器学习方法?...
  2. golang 函数指针相等比较
  3. 吴恩达深度学习课程deeplearning.ai课程作业:Class 2 Week 1 3.Gradient Checking
  4. 线性代数可以速成吗_怎么在一个晚上搞定线性代数?
  5. java失败javac成功_JAVA SE JDK-10安装、配置(解决java成功,javac失败问题)
  6. Bootstrap3 模态对话框的事件
  7. iOS 取消多余tableView的横线的写法
  8. 蜘蛛侠天堂,打死我mac键盘
  9. 计算机辅助机械设计a卷,二维CAD工程师(机械设计)考试A卷
  10. 二叉树非递归程序c语言,二叉树非递归遍历C语言实现
  11. python修改图像分辨率大小
  12. 【网上订机票安全吗?网上订机票防止被骗妙招】
  13. 基于知识图谱构建新一代数据智能基础设施
  14. 老K推荐,影响10位大佬的10本经典好书!
  15. 给嵌入式ARM+Linux的初学者
  16. 解决Dmaven.multiModuleProjectDirectory system propery is not set. Check M2_HOME错误
  17. PostgreSQL 技术文档
  18. 联系人等拼音搜索算法与框架的心得
  19. 厚物科技《什么是PXI》
  20. level2--writeup

热门文章

  1. Monitor CodeForces - 846D ——二维前缀和
  2. python爬虫一般格式
  3. 一、多个txt文件合并成1个txt文件
  4. android o 全机型推送,氢OS(Android O)官方更新推送 一加两款机型完成适配
  5. python场景建立_Python创建一个街道地址表-问答-阿里云开发者社区-阿里云
  6. Open3d学习计划—高级篇 3(点云全局配准)
  7. Ray Tracing,Ray Casting,Path Tracing,Ray Marching 的区别?
  8. IDEA设置单击左侧项目文件,自动在右侧编辑器打开
  9. 将图片(路径)转换为Base64 和 将base64转换为file类型
  10. shell中引号的使用方法