创建和使用Qt插件的简单例子

【转自】http://topic.csdn.net/u/20111009/17/44c65c25-1039-4715-90a5-6e798ebf284c.html

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

C/C++ code
   
   
class MyInterface
{
public:
virtual ~ MyInterface() {}
virtual QString getString() = 0 ;
}; // 将MyInterface和"me.xzis.MyInterface/1.0"这一唯一标识符绑定
// 注意该操作不能在任何namespace内完成
QT_BEGIN_NAMESPACE
Q_DECLARE_INTERFACE(MyInterface, "Mystring");
QT_END_NAMESPACE


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

Q_EXPORT_PLUGIN2(myPlugin, MyPlugin);

QT_END_NAMESPACE


在插件的testMyPlugin的main()中:

int main(int argc, char *argv[])

{

	QApplication a(argc, argv);

	QPluginLoader loader("myPlugin.dll");

	// 该函数会自动加载插件

	// 注意加载插件的耗时较长

	QObject *instance = loader.instance();

	if (instance) {

		// 必须使用qobject_cast做类型转换

		MyInterface *interface = qobject_cast<MyInterface *>(instance);

		qDebug() << interface->getString();

	}

	return a.exec();

}


【源码】:http://download.csdn.net/detail/addfourliu/3766553

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值