Qt 插件

在创建插件以前,我们需要首先定义一个接口,用于程序和插件之间的交互:
C/C++ code
   
   
class MyInterface { public : virtual ~ MyInterface() {} virtual QString getString() = 0 ; }; // 将MyInterface和"me.xzis.MyInterface/1.0"这一唯一标识符绑定 // 注意该操作不能在任何namespace内完成 Q_DECLARE_INTERFACE(MyInterface, " me.xzis.MyInterface/1.0 " )


然后我们实现一个简单的插件:
C/C++ code
   
   
// myplugin.h class MyPlugin : public QObject, public MyInterface { Q_OBJECT // 将该接口注册到Qt的meta-object system Q_INTERFACES(MyInterface) public : virtual QString getString(); }; // myplugin.cpp QString MyPlugin::getString() { return " Qt Plugins " ; } // 导出该插件 // 注意.pro中的TARGET必须是"myPlugin" Q_EXPORT_PLUGIN2(myPlugin, MyPlugin)


在插件的.pro中:
JScript code
   
   
TEMPLATE = lib CONFIG += plugin TARGET = myPlugin


最后在程序中,我们可以用以下代码来使用插件:
C/C++ code
   
   
QPluginLoader loader( " /path/to/myPlugin " ); // 该函数会自动加载插件 // 注意加载插件的耗时较长 QObject * instance = loader.instance(); if (instance) { // 必须使用qobject_cast做类型转换 MyInterface * interface = qobject_cast < MyInterface *> (instance); qDebug() << interface -> getString(); }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值