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();
}
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();
}
相关文章推荐
- 在Windows 7下配置VS2008 Qt 插件,编译错误处理【转】
- vs+qt插件,无法解析的外部符号解决记录
- Qt自定义插件关闭时崩溃
- QT插件开发方式(作者有RemOjbects文档翻译(48)篇)
- 如何使用Qt插件在Qt中进行ROS开发
- ROS_Kinetic_22 使用ROS的qt插件即ros_qtc_plugin实现Hi ROS!!!!
- 最简单易用的Qt 界面库插件 FTStyle (一)
- Qt插件定义
- Qt一步一步实现插件调用(附源码)
- Qt 插件 V4
- 构建自己的Qt插件系统
- QT5.4 vs2013静态编译之加载静态插件sqlite
- qt 添加程序插件目录
- QT4.7.1版本 mysql驱动插件 编译的问题
- 对Qt插件功能实现的理解
- 最简单易用的Qt 界面库插件 FTStyle (二)最新版本 - 2017年10月
- Qt5.2.1交叉编译,带tslib插件
- Qt实例分析——C++定义的类创建为供QML使用的插件
- QT中的插件
- Qt插件机制的学习