QT插件系统

  1. 创建接口头文件,Q_DECLARE_INTERFACE,定义接口

    #ifndef PLUGINONEINTERFACE_H
    #define PLUGINONEINTERFACE_H
    #include <QWidget>
    // 组织域名+产品名+版本号
    #define PluginOneInterfaceIID "baidu.com.PluginOneInterface/1.0"
    class PluginOneInterface
    {
    public:
    virtual ~PluginOneInterface() = default;
    virtual QWidget* getWidget() = 0;
    };
    Q_DECLARE_INTERFACE(PluginOneInterface,PluginOneInterfaceIID)
    #endif // PLUGINONEINTERFACE_H

  2. 编写插件类,继承接口类

    class PLUGINONE_EXPORT PluginOne:public QObject ,public PluginOneInterface
    {
    Q_OBJECT
    Q_PLUGIN_METADATA(IID PluginOneInterfaceIID FILE "PluginOne.json")
    Q_INTERFACES(PluginOneInterface)
    public:
    PluginOne();
    ~PluginOne();
    QWidget * getWidget() override;
    private:
    QWidget * mWidget{nullptr};
    };

  3. 主项目加载插件

  4. 获取插件中元数据Q_PLUGIN_METADATA的json数据

    QJsonObject meta = loader.metaData();
    QJsonObject metaData = meta.value("MetaData").toObject();
    QString version = metaData.value("version").toString();
    QString name = metaData.value("name").toString();

相关推荐
hellokandy15 小时前
Qt QCache 使用指南
qt·lru·qpair·qcache
小许同学记录成长15 小时前
全景扫描瀑布图实现
qt
加号317 小时前
【Qt】 应用程序发布:依赖库拷贝与部署指南
开发语言·qt
神仙别闹21 小时前
基于QT(C++)实现线性表的建立、插入、删除、查找等基本操作
java·c++·qt
LuDvei1 天前
Windows x86 架构下 Ubuntu 虚拟机内打包 Qt 文件指南
windows·qt·ubuntu
江公望1 天前
Qt Q_OBJECT宏,5分钟讲清楚
qt
小灰灰搞电子1 天前
PyQt QtWaitingSpinner详解-为你的 Qt 程序带来丝滑等待动画
开发语言·qt·pyqt
史迪仔01121 天前
[QML] Qt6/Qt5四大渐变效果实战指南
开发语言·前端·c++·qt
小短腿的代码世界1 天前
QCefView深度解析:在Qt中嵌入Chromium的架构设计与性能优化实战
开发语言·qt·性能优化