基于Qt的插件扩展

基于Qt的插件进行扩展

定义插件接口

 #if defined(WORKFLOW_LIBRARY)
#  define WORKFLOW_EXPORT Q_DECL_EXPORT
#else
#  define WORKFLOW_EXPORT Q_DECL_IMPORT
#endif
 
class WORKFLOW_EXPORT IPlugin 
{
public:
    virtual ~IPlugin() {}
    virtual void initModelRegistry(QStringList& vecCategoryIndex, 
        std::map<QString, std::map<QString, QString>>& categorysInfo,
        std::shared_ptr<QtNodes::NodeDelegateModelRegistry>& modelRegistry) = 0;
};

QT_BEGIN_NAMESPACE
#define WORKFLOW_IID "org.qt-project.Qt.Vision.Workflow"
Q_DECLARE_INTERFACE(IPlugin, WORKFLOW_IID)
QT_END_NAMESPACE

定义自己的插件类

#include "IPlugin.h"
#include <QObject>
#include <QtPlugin>


class WORKFLOW_EXPORT FacePlugin : public QObject, public IPlugin
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID WORKFLOW_IID)
    Q_INTERFACES(IPlugin)

public:
    virtual void initModelRegistry(QStringList& vecCategoryIndex, 
        std::map<QString, std::map<QString, QString>>& categorysInfo,
        std::shared_ptr<QtNodes::NodeDelegateModelRegistry>& modelRegistry)override;

};

加载插件

QPluginLoader loader("./lib/libfacePlugin.so");
    if(loader.load())
    {
        if(QObject * plugin = loader.instance())
        {
            IPlugin* pluginNode = dynamic_cast<IPlugin *>(plugin);
			QStringList vecCategoryIndex;
			std::map<QString, std::map<QString, QString>> categorysInfo;
			pluginNode->initModelRegistry(vecCategoryIndex, categorysInfo, m_modelRegistry);
        }
    }
    else
    {
        qDebug()<<loader.errorString();
    }

相关推荐

  1. 基于Qt扩展

    2024-03-27 16:12:02       18 阅读
  2. Qt

    2024-03-27 16:12:02       19 阅读
  3. Qt 框架

    2024-03-27 16:12:02       7 阅读
  4. Qt之·Qt开发·导出步骤】

    2024-03-27 16:12:02       12 阅读
  5. Kubernetes 使用扩展 kubectl

    2024-03-27 16:12:02       43 阅读
  6. Edge扩展如何安装位置?

    2024-03-27 16:12:02       29 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-27 16:12:02       14 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-27 16:12:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-27 16:12:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-27 16:12:02       18 阅读

热门阅读

  1. 了解 C++ 中的三元运算符

    2024-03-27 16:12:02       15 阅读
  2. chrome安装vue插件vue-devtools

    2024-03-27 16:12:02       23 阅读
  3. 计算两点距离工具类

    2024-03-27 16:12:02       15 阅读
  4. ardupilot开发 --- 机载(边缘)计算机-VISP-附录 篇

    2024-03-27 16:12:02       17 阅读
  5. Python GUI编程(Tkinter)

    2024-03-27 16:12:02       15 阅读
  6. 浅析机器学习的常用方法

    2024-03-27 16:12:02       17 阅读