您的位置:首页 > 编程语言 > Qt开发

Qt 插件

2012-08-26 21:39 99 查看
在创建插件以前,我们需要首先定义一个接口,用于程序和插件之间的交互:
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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息