qt creator源码全方面分析(2-10-5)
The Plugin Manager, the Object Pool, and Registered Objects
通常,插件不需要直接访问插件管理器。 交互主要间接的通过ExtensionSystem::IPlugin接口。 在某些情况下,则必须使用插件管理器API。 插件需要访问插件管理器的对象池,以扩展Qt Creator的某些方面,例如将页面添加到选项对话框。 他们还可以利用对象池为其他插件提供扩展点。
插件管理器
插件管理器处理所有细节,包括查找插件,读取它们的描述文件,解决插件依赖性,以正确的顺序加载和初始化所有插件,以及传递命令行参数给插件。
另外,插件管理器管理对象池,可以根据不同的条件在其中注册和检索对象。
插件与插件管理器的大多数交互应通过ExtensionSystem::IPlugin接口完成,但是下表总结了一些对插件有用的函数和信号。 有关完整列表,请参见ExtensionSystem::PluginManager参考文档。
| 函数 | 描述 |
|---|---|
| instance() | 返回插件管理器单例,例如,用于连接信号。 |
| addObject() | 在对象池中注册对象。 也可以通过ExtensionSystem::IPlugin::addObject()。 |
| removeObject() | 从对象池中移除对象。 也可以通过ExtensionSystem::IPlugin::removeObject()。 |
| allObjects() | 返回对象池中注册的所有对象的未过滤列表。 |
| getObject() | 返回注册在对象池中的类型为T的对象。 这在向Aggregation致敬。 |
| getObjectByName(const QString &name) | 返回在对象池中注册的具有给定对象名称的对象。 |
| 信号 | 描述 |
|---|---|
| objectAdded(QObject *object) | 在对象被注册到对象池之后发送。 |
| aboutToRemoveObject(QObject *object) | 在对象从对象池中移除之前发送。 |
| initializationDone() | 在插件运行,且所有延迟的初始化完成时发送。 |
对象池和已注册对象
插件可以将对象注册到由插件管理器管理的公共池中。池中的对象必须派生自QObject,无需其他先决条件。
所有指定类型的对象,可以通过getObject()函数从对象池中检索。函数感知Aggregation::Aggregate,并使用Aggregation::query()函数,而不是qobject_cast来判断匹配对象。
可以通过allObjects()函数,检索在对象池中注册的所有对象的未过滤列表。
也可以使用getObjectByName(),检索具有特定对象名称的对象(参见QObject::objectName())。
每当对象池的状态更改时,插件管理器都会发出相应的objectAdded() 或 aboutToRemoveObject()信号。
对象池的一个常见用例是,一个插件(或应用程序)为其他插件提供了扩展点,扩展点为类,在其他插件中实现,并添加到对象池中,然后供提供扩展点的插件检索。也可以使用对象池来提供对对象的访问,而无需实际链接到提供的插件库。
原创造福大家,共享改变世界
献出一片爱心,温暖作者心灵

qt creator源码全方面分析(2-10-5)的更多相关文章
- qt creator源码全方面分析(3-3)
目录 qtcreatordata.pri 定义stripStaticBase替换函数 设置自定义编译和安装 QMAKE_EXTRA_COMPILERS Adding Compilers 示例1 示例2 ...
- qt creator源码全方面分析(3-5)
目录 qtcreatorlibrary.pri 使用实例 上半部 下半部 结果 qtcreatorlibrary.pri 上一章节,我们介绍了src.pro,这里乘此机会,把src目录下的所有项目文件 ...
- qt creator源码全方面分析(0)
本人主攻C++和Qt. 上两天刚研究完Qt install framework(IFW)应用程序安装框架. google没发现有正儿八经的官方文档的翻译,我就进行了翻译哈!! 系列文章具体见:http ...
- qt creator源码全方面分析(4-0)
Qt系统 Qt Creator源码是在Qt对象和框架基础下写的,因此,阅读Qt Creator源码,你首先对Qt得有一定的了解. Qt Core Qt Core特征: The Meta-Object ...
- qt creator源码全方面分析(4-2)
目录 global头文件 global.h xx.h global头文件 插件的本质就是动态链接库,对于库,需要导出符号,供用户导入使用.在qt creator的源码中,存在固定的导入导出模式. gl ...
- qt creator源码全方面分析(4-5)
目录 Qt中的字符串 QLatinString 详细介绍 源码 小结 QStringLiteral(str) 详细介绍 源码 小结 Qt中的字符串 Qt中处理字符串最常用的肯定是QString,但是在 ...
- qt creator源码全方面分析(4-6)
目录 Qt插件基础 Qt插件基础 我们知道Qt Creator源码是基于插件架构的,那么我们先来介绍下插件基础知识. 相关内容如下: How to Create Qt Plugins [ - Defi ...
- qt creator源码全方面分析(3-2)
目录 qtcreator.pri 判断重复包含 定义版本信息 VERSION 定义IDE名称 启用C++14 CONFIG 自定义函数 Replace Functions Test Functions ...
- qt creator源码全方面分析(2-7)
目录 Completing Code 补全代码片段 编辑代码片段 添加和编辑片段 删除片段 重置片段 补全Nim代码 Completing Code 在编写代码时,Qt Creator建议使用属性,I ...
- qt creator源码全方面分析(2-10-1)
目录 Getting and Building Qt Creator 获取Qt 获取和构建Qt Creator Getting and Building Qt Creator 待办事项:应该对此进行扩 ...
随机推荐
- Spring Boot2 系列教程 (十四) | 统一异常处理
如题,今天介绍 SpringBoot 是如何统一处理全局异常的.SpringBoot 中的全局异常处理主要起作用的两个注解是 @ControllerAdvice 和 @ExceptionHandler ...
- NOIP提高组2018试题解析 Day1 T1 铺设道路 P5019
题目描述 春春是一名道路工程师,负责铺设一条长度为 nn 的道路. 铺设道路的主要工作是填平下陷的地表.整段道路可以看作是 nn 块首尾相连的区域,一开始,第 ii 块区域下陷的深度为 d_idi ...
- 自己动手搭环境—unit 1、Struts2环境搭建
1.web.xml中增加Struts2配置 <filter> <filter-name>struts2</filter-name> <filter-class ...
- C# 调用word进程操作文档关闭进程
C# 调用word进程操作文档关闭进程 作者:Jesai 时间:2018-02-12 20:36:23 前言: office办公软件作为现在主流的一款办公软件,在我们的日常生活和日常工作里面几乎每天都 ...
- 信息: TLD skipped. URI: http://www.fusioncharts.com/jsp/core is already defined
二月 02, 2018 11:43:28 上午 org.apache.catalina.startup.TaglibUriRule body 信息: TLD skipped. URI: http:// ...
- Pandas中merge和join的区别
可以说merge包含了join的操作,merge支持通过列或索引连表,而join只支持通过索引连表,只是简化了merge的索引连表的参数 示例 定义一个left的DataFrame left=pd.D ...
- 机器学习- Sklearn (交叉验证和Pipeline)
前面一节咱们已经介绍了决策树的原理已经在sklearn中的应用.那么这里还有两个数据处理和sklearn应用中的小知识点咱们还没有讲,但是在实践中却会经常要用到的,那就是交叉验证cross_valid ...
- URL方案最佳做法|高级路由特性 | 精通ASP-NET-MVC-5-弗瑞曼
使 URL整洁和人性化 GET(安全交互)和POST(不安全交互):选用正确的一个.
- PPT制作简易套路指南
最近正在重做公众号相关的一些设计以及排版,想到年前部门里的UI设计大神做了一个关于"PPT设计指南"的分享,正好可以拿来实践一把. 一直以来,PPT.Word.Excel都是办公人 ...
- 笔记常用Linux命令(三) 查看服务器日志
服务器日志 用于记录服务器的运行情况 查看服务器日志 tail:查看后面几行 n 显示行数 f 持续侦测后面的内容,查看服务器日志常用 查看最新的服务日志(静态) 命令格式:tail -n 行数 日志 ...