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

39 篇文章 0 订阅

在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();//过程管理器初始化
    //以下是输出窗口的一些操作
    ......
}
可以看出初始化操作主要是对三个管理器进行初始化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值