现在的位置: 首页 > 综合 > 正文

Qt 插件

2012年09月20日 ⁄ 综合 ⁄ 共 885字 ⁄ 字号 评论关闭

在创建插件以前,我们需要首先定义一个接口,用于程序和插件之间的交互:

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(); }

抱歉!评论已关闭.