As long as you are not linking against a statically built Qt then everythign should work fine.
The following code builds plugin lib in linux, and I think should build proper dll in windows
#ifndef _PLUGIN_WIDGET_INTERFACE_H_
#define _PLUGIN_WIDGET_INTERFACE_H_
#include <QtPlugin>
#include <QObject>
class PluginWidgetInterface
: public QObject{
Q_OBJECT
public:
virtual ~PluginWidgetInterface() {}
signals:
void MessageSend();
};
#define PluginWidgetInterface_iid "myplugins.PluginWidgetInterface"
Q_DECLARE_INTERFACE(PluginWidgetInterface, PluginWidgetInterface_iid)
#endif
#ifndef _PLUGIN_WIDGET_INTERFACE_H_
#define _PLUGIN_WIDGET_INTERFACE_H_
#include <QtPlugin>
#include <QObject>
class PluginWidgetInterface : public QObject
{
Q_OBJECT
public:
virtual ~PluginWidgetInterface() {}
virtual QWidget * GetWidget() = 0;
signals:
void MessageSend();
};
#define PluginWidgetInterface_iid "myplugins.PluginWidgetInterface"
Q_DECLARE_INTERFACE(PluginWidgetInterface, PluginWidgetInterface_iid)
#endif
To copy to clipboard, switch view to plain text mode
#ifndef _PLUGIN1_H_
#define _PLUGIN1_H_
#include "plugininterface.h"
class Plugin1 : public PluginWidgetInterface
{
Q_OBJECT
//Q_PLUGIN_METADATA(IID "myplugins.Plugin1")
Q_INTERFACES(PluginWidgetInterface)
public:
~Plugin1() {}
};
#endif
#ifndef _PLUGIN1_H_
#define _PLUGIN1_H_
#include "plugininterface.h"
class Plugin1 : public PluginWidgetInterface
{
Q_OBJECT
//Q_PLUGIN_METADATA(IID "myplugins.Plugin1")
Q_INTERFACES(PluginWidgetInterface)
public:
~Plugin1() {}
QWidget * GetWidget();
};
#endif
To copy to clipboard, switch view to plain text mode
#include "plugin1.h"
{
return 0;
}
Q_EXPORT_PLUGIN2(plugin1, Plugin1);
#include "plugin1.h"
QWidget * Plugin1::GetWidget()
{
return 0;
}
Q_EXPORT_PLUGIN2(plugin1, Plugin1);
To copy to clipboard, switch view to plain text mode
TEMPLATE = lib
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
# Input
HEADERS += plugin1.h plugininterface.h
SOURCES += plugin1.cpp
TEMPLATE = lib
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
# Input
HEADERS += plugin1.h plugininterface.h
SOURCES += plugin1.cpp
To copy to clipboard, switch view to plain text mode
Can then be used with
PluginWidgetInterface * plugin = qobject_cast<PluginWidgetInterface *>(loader.instance());
QWidget * widget
= plugin
->GetWidget
();
connect(plugin,SIGNAL(MessageSend()),this,SLOT(MessageReceived()));
QPluginLoader loader( qstrLibFilename );
PluginWidgetInterface * plugin = qobject_cast<PluginWidgetInterface *>(loader.instance());
QWidget * widget = plugin->GetWidget();
connect(plugin,SIGNAL(MessageSend()),this,SLOT(MessageReceived()));
To copy to clipboard, switch view to plain text mode
Bookmarks