QT插件系统

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

    #ifndef PLUGINONEINTERFACE_H
    #define PLUGINONEINTERFACE_H
    #include
    // 组织域名+产品名+版本号
    #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();

相关推荐
读书札记20227 小时前
Qt界面卡死问题探讨及解决方法
qt
bug和崩溃我都要11 小时前
Qt 封装 libmpv 全功能视频播放器开发指南
开发语言·qt·音视频
郝学胜-神的一滴11 小时前
Qt 高级开发 018:复刻经典登录界面布局与窗口美化全解析
开发语言·c++·qt·程序人生·用户界面
小新11012 小时前
qt creator 将qInfo的输出日志写入日志文档,方便查看
开发语言·qt
hssfscv13 小时前
QT的学习记录1
开发语言·qt·学习
yong999013 小时前
基于Qt的文件传输系统
开发语言·qt
誰能久伴不乏14 小时前
ibmodbus “Invalid argument“ 错误的排查与修复
c++·qt·modbus
肥or胖15 小时前
Qt中OpenGL快速入门
qt·音视频·opengl
程序员如山石17 小时前
QT标签左侧水平显示
qt
xcyxiner18 小时前
ubuntu下 cmake初始化脚本 以及 qt依赖
c++·qt