QObject派生类作为Qt 插件的Interface

来源:互联网 发布:童装店收银软件 编辑:程序博客网 时间:2024/05/16 19:56

Qt例子中,插件接口用的是普通的C++类(非QObject派生类),那么能否使用QObject派生类作为插件接口呢。在尝试之前,先google一下,找到到Qt邮件列表中的两个thread,只有一个回复中提到了可以直接用,但却没有得到其他人的附和。

算了,还是自己来试试吧。

结果,运行正常。

代码

  • mathinterface.h

#ifndef MATHINTERFACE_H#define MATHINTERFACE_H#include <QtCore/QObject>#include <QtCore/QtPlugin>class MathInterface:public QObject{    Q_OBJECTpublic:    virtual ~MathInterface() {}signals:    void sig2(int val);public slots:    virtual void setValue(int val) = 0;};Q_DECLARE_INTERFACE(MathInterface, "com.example.Plugin.MathInterface/0.1");#endif
  • plugin1.h

#ifndef PLUGIN1_H#define PLUGIN1_H#include <QtCore/QObject>#include "mathinterface.h"class Plugin1:public MathInterface{    Q_OBJECT    Q_INTERFACES(MathInterface)public:    Plugin1(QObject *parent=NULL);    void setValue(int val);};#endif // PLUGIN1_H
  • plugin1.cpp

#include "plugin1.h"Plugin1::Plugin1(QObject *parent){}void Plugin1::setValue(int val){    emit sig2(val);}Q_EXPORT_PLUGIN2(plugin1, Plugin1);

信号与槽工作均正常。

参考

  • http://doc.qt.nokia.com/4.7/plugins-howto.html#the-lower-level-api-extending-qt-applications

  • http://lists.trolltech.com/qt-interest/2006-11/thread00745-0.html

  • http://lists.qt.nokia.com/pipermail/qt-interest/2010-October/028135.html


原创粉丝点击