Siento no haber podido contestar antes pero he estado liado con otras cosas.
La pregunta era la siguiente:
Teniendo mis propios plugins creados, como mantener distintas versiones en activo a la vez de esos plugins.
Lo he conseguido de una forma un poco burra pero funciona, que es añadiendo al nombre de la clase base la versión a la que pertenece. Esto lo he realizado mediante defines, teniendo que modificar una sola variable para crear una nueva versión.
Pero para que en Eclipse, el plugin funcione correctamente, donde se define la clase no puede estar con el define, en todo el resto de la clase si.
Añadiré parte del código por si no me expresado correctamente:
PuebaPlugin.h
@#ifndef PRUEBAPLUGIN_H
#define PRUEBAPLUGIN_H
#include <QDesignerCustomWidgetInterface>
#define PLG_VRS "0"
#define PRUEBA Prueba_0
class PruebaPlugin : public QObject,
public QDesignerCustomWidgetInterface
{
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
PruebaPlugin(QObject *parent = 0);
bool isContainer() const;
bool isInitialized() const;
QIcon icon() const;
QString domXml() const;
QString group() const;
QString includeFile() const;
QString name() const;
QString toolTip() const;
QString whatsThis() const;
QWidget *createWidget(QWidget *parent);
void initialize(QDesignerFormEditorInterface *core);
private:
bool initialized;
};
#endif // PRUEBAPLUGIN_H@
PuebaPlugin.cpp
@#include "pruebaplugin.h"
#include "prueba.h"
#include <QtPlugin>
PruebaPlugin::PruebaPlugin(QObject *parent)
: QObject(parent)
{
initialized = false;
}
void PruebaPlugin::initialize(QDesignerFormEditorInterface *)
{
if (initialized)
return;
initialized = true;
}
bool PruebaPlugin::isInitialized() const
{
return initialized;
}
QWidget *PruebaPlugin::createWidget(QWidget *parent)
{
return new PRUEBA(parent);
}
QString PruebaPlugin::toolTip() const
{
return "";
}
QString PruebaPlugin::whatsThis() const
{
return "";
}
bool PruebaPlugin::isContainer() const
{
return false;
}
QString PruebaPlugin::domXml() const
{
QString str;
str=QString("<ui language="c++">\n"
" <widget class="Prueba_%1" name="Prueba_%1">\n"
" <property name="geometry">\n"
" <rect>\n"
" <x>0</x>\n"
" <y>0</y>\n"
" <width>50</width>\n"
" <height>50</height>\n"
" </rect>\n"
" </property>\n"
" <property name="toolTip" >\n"
" <string></string>\n"
" </property>\n"
" <property name="whatsThis" >\n"
" <string></string>\n"
" </property>\n"
" </widget>\n"
"</ui>\n").arg(PLG_VRS);
return str;
}
QString PruebaPlugin::includeFile() const
{
return "prueba.h";
}
Q_EXPORT_PLUGIN2(PruebaPlugin, PruebaPlugin)
@
Prueba.h
@#ifndef PRUEBA_H
#define PRUEBA_H
#include <QtGui/QWidget>
#include <QtDesigner/QDesignerExportWidget>
#include "ui_prueba.h"
#define PLG_VRS "0"
#define PRUEBA Prueba_0
class QDESIGNER_WIDGET_EXPORT Prueba_0 : public QWidget
{
Q_OBJECT
public:
PRUEBA(QWidget *parent = 0);
~PRUEBA();
private:
Ui::pruebaClass ui;
};
#endif // PRUEBA_H
@
Prueba.cpp
@#include "prueba.h"
PRUEBA::PRUEBA(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
}
PRUEBA::~PRUEBA()
{
}
@
Al final la clase base del plugin en la que esta definida en el define y en la definición de la clase Prueba_0, que tienen que ser lo mismo.
Se entiende algo mejor ahora o no?