`
gaofen100
  • 浏览: 1188081 次
文章分类
社区版块
存档分类
最新评论

QObject派生类作为Qt 插件的Interface

 
阅读更多

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_OBJECT
public:
    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);

信号与槽工作均正常。

参考


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics