Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Spanish
  4. [SOLUCIONADO]Plugins personalizados - Custom plugins
Forum Updated to NodeBB v4.3 + New Features

[SOLUCIONADO]Plugins personalizados - Custom plugins

Scheduled Pinned Locked Moved Spanish
3 Posts 2 Posters 2.3k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    Alnorte
    wrote on last edited by
    #1

    Buenos días a todos.

    estoy creando mis propios plugins para poderlos introducir posteriormente en eclipse pero hace tiempo tengo ciertos problemas con la diferenciación de las distintas versiones de estos plugins. Me gustaría que distintas versiones pudieran coexistir en la misma aplicación.

    Qt 4.6.1.

    la cuestión es que tengo una variable interna donde marco la versión a la que corresponde, pero aunque tenga los grupos de plugins bien definiciones en la barra The Qt widget box, luego todos los elementos me muestran la misma versión.

    Sé que en linux las versiones de las librerías tienen un sobre nombre después de .so como por ejemplo .so.0, .so.0.4, .so.0.4.2 pero cuando defines en el .pro

    @CONFIG +=release designer plugin@

    las librerías ya no utilizan ningún soname.

    Alguien me podría orientar por donde tirar? No he probado con versiones de Qt posteriores por cuestión de no poder moverme de versión a causa de otras aplicaciones.

    A alguien se le ocurre algo?

    1 Reply Last reply
    0
    • francescmmF Offline
      francescmmF Offline
      francescmm
      wrote on last edited by
      #2

      No acabo de entender qué es lo que quieres exactamente. Se trata de cargar tus propias librerias externas (.so) en tu aplicación?

      1 Reply Last reply
      0
      • A Offline
        A Offline
        Alnorte
        wrote on last edited by
        #3

        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&#40;&#41; 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?

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved