Qt Creator插件系统分析之生成插件列表

第一次接触Qt是在14年的时候,当时还正沉迷于破解和逆向之中,虽然接触过GUI的开发,但是接触的是国产的编程语言“易语言”,在制作破解补丁的时候只能用别人现成的补丁制作工具或使用易语言进行开发,但经常会出现被杀毒软件报毒,则有了接触新的GUI的想法,查看网上的很多资料之后发现MFC已经“太老了”,Qt正在”青年期”,便开始学习Qt。期间也将之前利用易语言开发的一些程序转为Qt,以用来熟悉Qt的开发。
现已19年了,在Qt Creaotr下进行开发也有4年了,(之前开发是使用Visual studio + Qt-Vs-Addin),第一次使用Qt Creator进行开发的时候就已经深深爱上它。在17年参加工作的时候,当时领导给我派了一个任务就是对Qt Creator的源码进行裁剪,将Qt Creator中的插件系统抽出来,当时只为快速的完成任务,并没有对插件系统的源码进行研究。在之后的工作中,虽然经常使用插件系统来进行插件开发,但是因为没有对源码进行研究,总有一种把握不了的感觉。引用STL源码剖析之中侯捷老师的一句话“源码之前,了无秘密”,希望借着此次源码学习的机会,充分的掌握插件系统的“秘密”。此源码分析基于Qt Creator3.4.2源码。
整个Qt Creator利用插件管理类主要可以分为如下几步:
1、读取插件目录
2、解析插件依赖关系
3、检查Core插件是否可以使用
4、加载整个插件目录下的插件

在读取整个插件目录之前,我们先来看看插件系统做了些什么操作。见src\app\main.cpp

PluginManager pluginManager;
PluginManager::setPluginIID(QLatin1String("org.qt-project.Qt.QtCreatorPlugin"));
//设置插件IID
PluginManager::setGlobalSettings(globalSettings); //设置全局配置
PluginManager::setSettings(settings);	//设置用户配置 ...
 // Load
const QStringList pluginPaths = getPluginPaths() + customPluginPaths;	//获取插件目录
PluginManager::setPluginPaths(pluginPaths); //设置插件目录

从上述源码中,我们可以看到插件系统在读取整个插件目录之前进行了三步操作,第一步操作是设置IID,在了解IID之前,我们需要先了解一下Qt5之后的插件是如何进行创建的

你可能感兴趣的:(源码分析,Qt,Creator插件系统)