Qt例子中,插件接口用的是普通的C++类(非QObject派生类),那么能否使用QObject派生类作为插件接口呢。在尝试之前,先google一下,找到到Qt邮件列表中的两个thread,只有一个回复中提到了可以直接用,但却没有得到其他人的附和。
算了,还是自己来试试吧。
结果,运行正常。
代码
#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
#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
#include "plugin1.h"
Plugin1::Plugin1(QObject *parent)
{
}
void Plugin1::setValue(int val)
{
emit sig2(val);
}
Q_EXPORT_PLUGIN2(plugin1, Plugin1);
信号与槽工作均正常。
参考
分享到:
相关推荐
以文件复制为例将继承QThread、QObject,两种Qt多线程方式作简单对比
一个不带QObject依赖的Qt信号系统的纯Python实现
QT_CTP_MD接口的例子,包括了初始化,登录,订阅,还有非QOBJECT类和主UI之间的通信方法
QT 利用继承Qobject实现多线程 利用moveToThread()函数将所需在新线程中处理的内容转移到开辟的新线程中 此外还利用了对不同线程进行加锁
Qt实战案例之利用QObject类实现定时器功能.zip,可参考文章:https://wendy.blog.csdn.net/article/details/126961143
Qt分析QObject子类内部成员结构,分控制台和UI界面两种方式,代码比较简单,适合新手。
简述了QObject的源代码,对初学者也能看懂
QT程序中的事件机制是通过SIGNAL-SLOT(信号-槽)来实现的,创建一个信号与槽的连接就是使用connect方法,它是QObject类下面的一...在非QObject派生类中使用connect方法需要指定QObject类,即使用QObject::connect()。
qtThread_2.rar qt 线程练习样例代码,继承Qobject方式
Qt 多线程采用继承QObject方式编写、
由于QML引擎与Qt元对象系统的紧密集成,任何由QObject派生出来的类其公有的接口或属性都可以从QML代码中轻松访问,并且改动的地方很少,就可以让C++代码定义的功能轻松扩展QML
Qt5.12 下实现对象创建器,通过类名实现创建任意对象,但是目前仅次于QObject派生类
qt 6.2.2+msvc 2019。qt安装的objectcontroller工具非常好用,但objectcontroller只支持qobject类型数据。这里做了修改,增加了对gadget型数据的支持。
类是整个Qt对象模型的心脏,事件处理机制是QObject三大职责( 内存管理、内省intropection、事件处理制)之一。 任何一个想要接受并处理事件的对象均须继承自QObject,可以选择重载QObject::event()函数或事件的...
QObject调用moveToThread(QThread *targetThread)后, 运行targetThread.start(),此后QObject的事件将在targetThread中处理。 比如:QObject的槽函数,将在targetThread中处理。
参考如下博客,亲自实践了一个QT的工厂模式,亲测可用,编译运行实测。 我用qt5.6,在windows下编译并运行测试,正常。 https://blog.csdn.net/baidu_33570760/article/details/71159808 1. Qt工厂模式源码 2. C++...
实现QObject与JavaScript通讯(基于QWebEngine + QWebChannel)
qtwebkit 本程序实现本地与js之间交互,可是通过本地按钮获取网页内容和向网页中发送数据,也可通过网页的按钮,向本地发送数据 和从本地提取数据
1.QObject::metaObject()函数返回类关联的元对象,元对象类QMetaObject包含了访问元对象的一些接口函数,例如QMetaObject::className()函数可在运行时返回类的名称字符串。 QObject obj=new QPushButton; obj->meta...
采用Qt5.9和VS2015的环境,编写了一个多线程的小程序,线程的创建方式继承QObject。