ToolBox · 建立插件接口

6 篇文章 0 订阅
6 篇文章 0 订阅

Qt 插件 《 ToolBox 》目录


简述

制作插件,首先,需要一个插件接口,并且,为了后期团队并行开发,或者请第三方的厂商帮忙开发,所以要将插件接口编译成共享库,这样可以防止接口不小心被修改,导致插件不兼容。

工程文件

在多工程目录中添加一个PluginWidget 插件工程。在 PluginWidget.pro文件中,将TEMPLATE设置为 lib, 添加 CONFIG += pluginDESTDIR = ../bin.

共享库 : TEMPLATE = lib
插件: CONFIG += plugin
指定目标文件生成路径: DESTDIR = …/bin

#-------------------------------------------------
#
#    PluginWidget.pro  工程文件
#
#-------------------------------------------------

QT       += widgets

TARGET = PluginWidget
TEMPLATE = lib
CONFIG += plugin

DEFINES += QT_DEPRECATED_WARNINGS

SOURCES += \
    pluginwidget.cpp

HEADERS += \
    pluginwidget.h \

DESTDIR = ../bin

这里,我们将插件生成在 bin 目录中。

头文件

  1. 后期的插件都是带GUI 的,所以插件接口直接继承了QWidget
  2. 由于方法 QPluginLoader::instance() 不能获取同一个插件的多个实例,所以定义了一个 newObj 的接口,用来获取插件的新实例对象。
  3. Q_DECLARE_INTERFACE 将接口PluginWidget注册到Qt 元对象系统当中,第二个参数PluginWidget_iid是一个接口标识,在整个应用程序当中,该 id 必须是唯一的。
#ifndef WIDGETPLUGIN_H
#define WIDGETPLUGIN_H

#include <QWidget>

class PluginWidget : public QWidget
{
    Q_OBJECT
public:
    PluginWidget(QWidget *parent = 0);

    virtual PluginWidget *newObj() = 0;
};

#define PluginWidget_iid "org.qt-project.Qt.Examples.PluginWidget"
Q_DECLARE_INTERFACE(PluginWidget, PluginWidget_iid)

#endif // WIDGETPLUGIN_H

生成插件接口

点击构建,Qt 将会在目录 bin 中生成一个库文件 PluginWidget.dll,将共享库文件PluginWidget.dll和上面的头文件 pluginwidget.h 分享出去,大家就可各自开工,实现自己的插件了。

注意 release 和 debug 版本,不同版本会存在不兼容的情况。

源码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值