QtCreator源码分析—4.核心插件

来源:互联网 发布:mac怎么创建文件夹 编辑:程序博客网 时间:2024/06/05 09:12

在QtCreator主程序中特别对核心插件,命名为Core的插件,进行了检查。核心插件也是QtCreator的主界面和入口,下面对核心插件进行分析。

1、插件接口类

插件接口类至少需要实现initialize和extensionsInitialized两个函数,两个函数分别在插件初始化和运行时调用。两个接口函数在核心插件中的实现

bool CorePlugin::initialize(const QStringList &arguments, QString *errorMessage){    Q_UNUSED(arguments)    const bool success = m_mainWindow->init(errorMessage); //启动主窗口    if (success) {        EditorManager *editorManager = m_mainWindow->editorManager();        m_editMode = new EditMode(editorManager);        addObject(m_editMode);  //在插件管理器中添加编辑模型对象    }    return success;}
void CorePlugin::extensionsInitialized(){    m_mainWindow->extensionsInitialized();}
核心插件接口类对于参数的解析
void CorePlugin::remoteArgument(const QString& arg){    if (arg.isEmpty()) {        m_mainWindow->activateWindow();    } else {        m_mainWindow->openFiles(QStringList(arg));     }}

可以看出核心插件的主要类是主窗口类。

2、主窗口类 MainWindow

从代码里可以看到,主窗口类作为主界面类,拥有较多的成员函数和操作。我从插件接口类对主窗口类的操作次序依次分析相关的操作过程。

2.1、主窗口类的生成

首先在类的实例初始化操作中是一些设置和固定成员的初始化;然后再生成函数中进行了一些主界面配置。

这里主要分析下主界面中包含哪些对象元素。

 

  • 相关管理类

ActionManagerPrivate *m_actionManager;
EditorManager *m_editorManager;
FileManager *m_fileManager;
MessageManager *m_messageManager;
ProgressManagerPrivate *m_progressManager;
ScriptManager *m_scriptManager;
VariableManager              *m_variableManager;
VCSManager *m_vcsManager;
ViewManager *m_viewManager;
ModeManager *m_modeManager;
MimeDatabase *m_mimeDatabase;

  • 相关UI类
FancyTabWidget *m_modeStack;NavigationWidget*m_navigationWidget;RightPaneWidget *m_rightPaneWidget;Core::BaseView *m_outputView;VersionDialog *m_versionDialog;
2.2、插件初始化调用的主窗口初始化 init
bool MainWindow::init(QString *errorMessage){    Q_UNUSED(errorMessage)    ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();    pm->addObject(m_coreImpl);    m_viewManager->init(); //视图管理器初始化    m_modeManager->init(); //模型管理器初始化    m_progressManager->init();//过程管理器初始化    //以下是输出窗口的一些操作    ......}
可以看出初始化操作主要是对三个管理器进行初始化