QtCreator源码分析—2.启动主程序
来源:互联网 发布:造价工程师有软件吗 编辑:程序博客网 时间:2024/05/18 08:27
QtCreator采用插件体系结构。主程序启动插件管理器(PluginManager),再通过插件管理器加载其插件,QtCreator的所有功能均使用插件实现。
我们先来分析主程序对插件管理器的主要操作:
int main(int argc, char **argv){......ExtensionSystem::PluginManager pluginManager;//生成插件管理器实例pluginManager.setFileExtension(QLatin1String("pluginspec"));//设置插件配置文件类型,默认xml pluginManager.setPluginPaths(pluginPaths);//设置插件所在目录
......//对参数操作//让插件管理器解析启动参数if (!pluginManager.parseOptions(arguments, appOptions, &foundAppOptions, &errorMessage)){}......//找到核心插件(由corePluginNameC定义其名字)const PluginSpecSet plugins = pluginManager.plugins(); ExtensionSystem::PluginSpec *coreplugin = 0; foreach (ExtensionSystem::PluginSpec *spec, plugins) {if (spec->name() == QLatin1String(corePluginNameC)) { coreplugin = spec; break; } }//对核心插件进行一些检查......//载入插件pluginManager.loadPlugins();//一些错误处理......if (isFirstInstance) { app.initialize();//将主程序运行过程中得到的消息传递给核心插件 QObject::connect(&app, SIGNAL(messageReceived(QString)), coreplugin->plugin(), SLOT(remoteArgument(QString))); }//将主程序的打开文件请求消息传递给核心插件 QObject::connect(&app, SIGNAL(fileOpenRequest(QString)), coreplugin->plugin(), SLOT(remoteArgument(QString)));//建立消息循环QTimer::singleShot(100, &pluginManager, SLOT(startTests())); return app.exec();}
从上面的过程,可以看出一共对插件管理器做了5件事情,依次为
1、插件管理器先设置了一些环境变量,比如插件配置文件类型、所在目录等
2、将启动参数交给插件管理器解析
3、对核心插件(特定命名的插件)进行检查
4、加载插件
6、将主程序的消息和核心插件的remoteArgument槽对接
- QtCreator源码分析—2.启动主程序
- QtCreator源码分析—1.结构图
- QtCreator源码分析—4.核心插件
- Mongodb源码分析--主程序入口main()
- Mongodb源码分析--主程序入口main()
- Mongodb源码分析--主程序入口main()
- Mongodb源码分析--主程序入口main()
- Mongodb源码分析--主程序入口main()
- Mongodb源码分析--主程序入口main()
- Nmap 源码学习三 nmap_main主程序分析
- Mongodb源码分析--主程序入口main()
- QtCreator源码分析 -3.插件管理系统
- Cocos2d-x 实例源码分析之一 主程序分析
- SharpDevelop源码分析 (二、主程序+隐藏的初始化)
- BT客户端源码分析之六:客户端的主程序
- 主程序启动前动画
- apm-rover主程序分析
- apm-rover主程序分析
- 串口通信
- JAVA策略模式
- QT4.7隐藏鼠标指针
- SQLServer最大连接数
- SSH整合之中文乱码问题
- QtCreator源码分析—2.启动主程序
- TCP长连接与短连接的区别
- PCB抗干扰设计原则(转)
- Android高手进阶教程(八)之----Android Widget开发案例(世界杯倒计时!)
- cocos2d-x跨android&ios平台开发入门教程
- Android TextView和EditText属性详解
- 6大设计原则精简总结
- QQTEA加密解密实现
- 深刻理解属性、getter及setter