virtual QObject* pluginObject() = 0;
class MyClass : public QObject, public ModuleInterface{ Q_OBJECT Q_INTERFACES(ModuleInterface)public:virtual QObject* pluginObject() { return this; }
C++ (Qt)virtual QObject* pluginObject() { return this; }
C++ (Qt)QPluginLoader loader("plugin");connect(loader.instance(), SIGNAL(pluginSignal()), SLOT(appSlot()));
C++ (Qt)#ifndef INTERFACES_H#define INTERFACES_H#include <QObject> class QString;class CameraInterface : public QObject{ Q_OBJECTpublic: virtual ~CameraInterface() {} virtual void powerOn(); ... virtual void extendedCommand(QString command); signals: void powerStateCahnged(bool state); void backlightStateChanged(bool state);}; Q_DECLARE_INTERFACE(CameraInterface, "ru.myCompany.myApp.cameraInterface/1.0") #endif // INTERFACES_H
C++ (Qt)virtual BaseCameraWorker * createWorkerObject() = 0;
C++ (Qt)class CameraInterface{//Q_SIGNALS:// void initDone();// Если тут не будут описаны сигналы}; class SonyCamera : public QObject, public CameraInterface{ void doInit() { ... emit initDone(); // то тут ты не сможешь испускать этот сигнал. } // и тогда тебе надо будет описывать его тут:Q_SIGNALS: void initDone();}; class AxisCamera : public QObject, public CameraInterface{...// и еще тут:Q_SIGNALS: void initDone();}; class TandbergCamera : public QObject, public CameraInterface{...// и еще тут:Q_SIGNALS: void initDone();}; //И во всех остальных классах придется делать копипасту.