IA写插件

第一步

首先,新建一个工程,并实现一个插件接口类,如下图中的objectfactoryinstance文件,用于:

  • 注册相关类(使该类可以支持反射),用于插件外面便捷的调用;
  • 将某些对象加入到该类对象管理对象里(如,UIService对象)。

IA写插件_第1张图片

//objectfactoryinstance.h
#include "def.h"
#include "objectfactory.h"

class PLUGIN ObjectFactoryInstance : public QObject, public ObjectFactory
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID "IASystem.ObjectFactoryInstance.CatalogPlugin")
    Q_INTERFACES(ObjectFactory)
public:
    ObjectFactoryInstance(){};
    ~ObjectFactoryInstance(){};

    void init() Q_DECL_OVERRIDE;
    void install() Q_DECL_OVERRIDE;

private:

};
//objectfactoryinstance.cpp
#include "objectfactoryinstance.h"
#include "gui.h"
#include "browser/qgsbrowserdockwidget.h"
#include "browser/browsercommand.hpp"
#include "browser/showbrowsercommand.hpp"

void ObjectFactoryInstance::init()
{
    this->registerClass<BrowserCommand>();
    this->registerClass<ShowBrowserCommand>();
}

void ObjectFactoryInstance::install()
{
    QMainWindow* pMainWindow = MAINWINDOW;

    // add by zz
    QgsBrowserDockWidget* pBrowser = new QgsBrowserDockWidget("browser",pMainWindow);
    pMainWindow->addDockWidget(Qt::RightDockWidgetArea, pBrowser);
    IA_SERVICE(UIService)->registerControl(pBrowser, pMainWindow);

}

第二步

实现第一步中注册了的类,例如:BrowserCommand、ShowBrowserCommand等外部接口类,以及QgsBrowserDockWidget等对象类。

第三步

写插件配置文件,在Bin\Win64\plugin目录下,创建插件目录,加入相应dll文件,并写好配置文件(文件名与目录名相同)。如果注册的类为toolbox项或者菜单项,则在basePlugin.plugin中配置其ui位置。
IA写插件_第2张图片

IA写插件_第3张图片

 


<PluginFile Name="IASystem.Catalog" Author="Zhang Min" Version="1.0" Description="Catalog Plugin.">
  <Manifest>
    
  Manifest>
  <Runtime Assembly="IA.CatalogPlugin.dll"/>
  <Resources>
    <String Language="zh_cn" File="Language/zh_cn/ia.catalogplugin_zh.qm">String>
    <String Language="en" File="Language/en/ia.catalogplugin_en.qm">String>
    <Icon File="resource/catalogplugin.res">Icon>
  Resources>
  
PluginFile>

第四步

通过软件的插件管理器来安装插件,安装成功后可以选择卸载插件(但注意,被卸载的插件不能够被其他插件所依赖)。
IA写插件_第4张图片

你可能感兴趣的:(C++库,vs2013)