IA写插件

第一步

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

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

这里写图片描述

//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.Catalog.plugin --> 

<?xml version="1.0" encoding="utf-8" ?>
<PluginFile Name="IASystem.Catalog"
            Author="Zhang Min"
                Version="1.0"
            Description="Catalog Plugin.">
  <Manifest>
    <!--the depency node. for example:
    <Dependency PluginFile="IASystem.GP" Version="1.0" requirePreload="true"/>-->
  </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>
  <!--Initialize some plugin node Path-->
</PluginFile>

第四步

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值