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);

信号与槽工作均正常。

参考


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值