Qt调用插件

来源:互联网 发布:virtualbox拖拽文件mac 编辑:程序博客网 时间:2024/06/08 04:16

首先创建一个Qt的一般的动态库
然后创建一个插件接口文件, 如下:

#pragma once#include <QtPlugin>class CQtMyPluginInterface{public:    virtual ~CQtMyPluginInterface() {}    virtual QString getString() = 0;};Q_DECLARE_INTERFACE(CQtMyPluginInterface, "cn.camelsoft.CQtMyPluginInterface/1.0")
  1. #include <QtPlugin> //引用Qt插件系统头文件
  2. Q_DECLARE_INTERFACE(CQtMyPluginInterface, "cn.camelsoft.CQtMyPluginInterface/1.0") //申明接口

然后改造库类的头文件, 如下:

#pragma once#include <QObject>#include "QtMyPluginInterface.h"class CQtMyPlugin : public QObject, public CQtMyPluginInterface{    Q_OBJECT    Q_PLUGIN_METADATA ( IID "cn.camelsoft.CQtMyPluginInterface/1.0")    Q_INTERFACES(CQtMyPluginInterface)public:    virtual QString getString();};
  1. Q_PLUGIN_METADATA ( IID "cn.camelsoft.CQtMyPluginInterface/1.0") //注册插件ID
  2. Q_INTERFACES(CQtMyPluginInterface) //申明插件接口

这样一个Qt插件框架下开发的插件就做好了. 接下来是调用

    QPluginLoader loader("QtMyPlugin.dll");    if (!loader.load())    {        return;    }    CQtMyPluginInterface *plugin = qobject_cast<CQtMyPluginInterface *>(loader.instance());    if (plugin)    {        QMessageBox::about(NULL, QStringLiteral("显示插件信息"), plugin->getString());    }

这里写图片描述

需要完整代码请访问QtWidgetsExamples

原创粉丝点击