Plugin für den designer

Alles rund um die Programmierung mit Qt
Antworten
lucksus
Beiträge: 1
Registriert: 16. März 2005 19:35

Plugin für den designer

Beitrag von lucksus »

Hallo zusammen,
ich versuche eine eigene Komponente zu entwickeln und schaffe es nicht, das designer plugin dafür zu erstellen.. Also, ich habs so gemacht, wie es auf der trolltech seite steht. Wird auch alles kompiliert und hab dann ein libcustomlistview.so in $(QTDIR)/plugins/designer. Der Doku zufolge sollte dann beim nächsten neustart das Plugin nutzbar sein.. isset aber nicht.. (Es ist einfach nicht zu sehen.) Der Pfad ist als Pluginpfad angegeben.. Woran könnt's liegen?

Also, hier der Code:

plugin.cpp:

Code: Alles auswählen

#include "plugin.h"
#include "../ddlistview.h"





static const char *pixmap[] = {
  "22 22 127 2",
  ".d c #000000",
  ".c c #131313",
  ".b c #282828",
  ".a c #434241",
  ".e c #4e463a",
  ".# c #595551",
  ".G c #66553b",
  "#F c #68635f",
  "#R c #6b4f23",
  "#q c #6e6862",
  "#M c #6f5229",
  ".n c #6f6146",
  ".w c #735310",
  ".V c #755c2a",
  ".I c #775f34",
  ".0 c #77694a",
  "#n c #7e6434",
  ".o c #806f50",
  "#C c #835d2d",
  ".P c #837c75",
  "#B c #85653a",
  "#k c #85827e",
  ".x c #866d46",
  ".U c #877967",
  ".X c #888888",
  ".F c #89724d",
  "#x c #8b6d2a",
  ".S c #8d7759",
  ".z c #8e733b",
  "#L c #906e49",
  "#Q c #947b56",
  ".r c #948058",
  ".J c #957844",
  ".4 c #987736",
  ".q c #998969",
  ".k c #999897",
  ".R c #9a8a75",
  "#i c #9f8348",
  "#I c #a37c4b",
  ".u c #a38d66",
  ".E c #a58558",
  "#A c #a8834b",
  ".s c #a9967a",
  ".t c #aa9467",
  ".C c #ae9f8d",
  "#6 c #afa49d",
  "#5 c #afa9a4",
  "#W c #b18e4d",
  ".K c #b1935a",
  ".B c #b39660",
  "#V c #b49866",
  "#a c #b49d6c",
  "## c #b49d72",
  ".j c #b5b4b4",
  "#0 c #b7a597",
  ".O c #b9b1a9",
  ".L c #bb9c61",
  ".M c #bb9e6b",
  ".A c #bca778",
  "#j c #bea46b",
  ".T c #bfb37d",
  ".v c #c0b391",
  ".W c #c3a262",
  ".i c #c4c4c4",
  "#m c #c5b7aa",
  "#8 c #c69f80",
  ".D c #c6b79b",
  "#3 c #c7a589",
  ".7 c #c7a76c",
  "#u c #c7bbaf",
  ".6 c #c8ad74",
  "#7 c #c8b7a9",
  "#r c #c8beb5",
  ".m c #c8c8c8",
  "#U c #cbad96",
  "#f c #ccb681",
  "#h c #cdac6c",
  "#P c #cdb49f",
  "#X c #cdb8a6",
  "#H c #ceb7a4",
  ".y c #ceb892",
  ".N c #cecac3",
  "#Z c #cfb16f",
  "#O c #cfbdad",
  ".Z c #cfc7c0",
  "#w c #d0bcab",
  ".5 c #d1ad6b",
  "#s c #d1bfb1",
  ".h c #d5d5d5",
  "#l c #d6cdc6",
  "#D c #d8b36e",
  ".H c #dac592",
  "#t c #dbb977",
  ".g c #dcdcdc",
  ".1 c #e0dcc1",
  ".f c #e0e0df",
  "#1 c #e3c8b1",
  "#S c #e4cdb9",
  ".3 c #e4d9a3",
  "#4 c #e6c1a1",
  "#2 c #e7c4a5",
  "#K c #e9c179",
  "#g c #e9c47e",
  "#Y c #e9c8ac",
  ".2 c #eae6c0",
  "#T c #ebcdb3",
  ".Q c #ebd4b9",
  "#E c #ecca87",
  "#z c #ecd799",
  ".l c #ececeb",
  "#G c #efd7c2",
  "#e c #efe3ab",
  ".8 c #efe8e3",
  "#v c #f1dcca",
  "#. c #f2e2d4",
  ".p c #f4f4f4",
  "#y c #f5daa0",
  "#J c #f6cf7f",
  ".9 c #f7ede4",
  "#p c #f9d995",
  ".Y c #fcf9f6",
  "#d c #fefcc5",
  "#c c #fefdda",
  "#b c #fefee1",
  "#N c #ffd685",
  "#o c #fff0a9",
  "Qt c #ffffff",
  "QtQtQtQtQtQt.#.a.a.a.b.b.b.c.c.d.d.dQtQtQtQt",
  "QtQtQtQtQtQt.e.f.g.g.f.g.g.h.i.j.d.k.dQtQtQt",
  "QtQtQtQtQtQt.a.gQtQtQtQtQtQt.l.f.c.m.k.dQtQt",
  "QtQtQtQtQt.n.n.n.n.n.o.g.pQtQt.l.bQt.m.k.dQt",
  "QtQtQt.q.q.r.q.s.t.r.q.u.u.g.pQt.a.fQt.m.k.d",
  "QtQt.s.s.v.w.x.y.y.t.z.A.t.B.i.p.#.a.b.c.d.d",
  "Qt.C.C.D.E.F.G.A.H.F.I.J.K.L.M.i.p.l.N.O.P.d",
  "Qt.s.v.Q.q.R.S.T.A.R.U.V.L.W.W.X.g.Y.f.Z.k.d",
  ".0.s.t.Q.1.U.R.2.3.S.U.4.5.6.6.7.j.8.9#..O.d",
  ".G##.V#a#b.1#c#c#d#e#f#g#h#i#j.W#k#l.9#.#m.d",
  ".G.4.F#n#c#c#c#d#d#o#p#g.x.w#i.L#q#r#.#.#s.d",
  ".e.J.J.I.3#d.H#j.6#f#p#t#n.w.E.L#q#u#.#v#w.d",
  ".G.A#x.z#y#z#A#B#B#C#D#E.4.4.6#h#F#m#v#G#H.d",
  ".o.s.A#j#E#t#I#I#I#C#A#J#p#p#K#t#F#m#v#G#H.d",
  "Qt##.A.6.7#I#I#A.E#L#M.W#N#J#K.a.U#O#G.Q#P.d",
  "Qt#a.M.L.J#A#I.4.E#Q.x#R#D#J#g.#.C#S.Q#T#U.d",
  "QtQt#V.K.z#Q.s.S.x.S#B#M#W#E.a.U#X.Q#T#Y#U.d",
  "QtQtQt.M#i#B.r#Q#Q.r#Q.z#Z.a#q#0#1#T#Y#2#3.d",
  "QtQtQtQtQt#j.L.L.W.5#t.a.#.U#0#1#T#Y#2#4#3.d",
  "QtQtQtQtQtQt.d#F#q#q#q.P.C#O#S.Q#T#Y#2#4#3.d",
  "QtQtQtQtQtQt.d#5#5#6#6#0#7#w#H#P#U#U#3#3#8.d",
  "QtQtQtQtQtQt.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d"
};





    CustomListView::CustomListView()
    {
    }
    
    QStringList CustomListView::keys() const
    {
        QStringList list;
        list << "DDListView";
        return list;
    }
    
    QWidget* CustomListView::create( const QString &key, QWidget* parent, const char* name )
    {
        if ( key == "DDListView" )
            return new DDListView( parent, name );
        return 0;
    }
    
    
    QString CustomListView::includeFile( const QString& feature ) const
    {
        if ( feature == "DDListView" )
            return "/home/nico/QTTest/ddlistbox.h";
        return QString::null;
    }
    
    
    QString CustomListView::group( const QString& feature ) const
    {
        if ( feature == "DDListView" )
            return "Views";
        return QString::null;
    }

    QIconSet CustomListView::iconSet( const QString& ) const
    {
        return QIconSet( QPixmap( pixmap ) );
    }


    QString CustomListView::toolTip( const QString& feature ) const
    {
        if ( feature == "DDListView" )
            return "List view mit drag'n'drop";
        return QString::null;
    }

    QString CustomListView::whatsThis( const QString& feature ) const
    {
        if ( feature == "DDListView" )
            return "Dies ist ein list view mit drag'n'drop";
        return QString::null;
    }
    
    
    
    bool CustomListView::isContainer( const QString& ) const
    {
        return FALSE;
    }
    
    
    Q_EXPORT_PLUGIN( CustomListView )
    
   
plugin.h:

Code: Alles auswählen

    #include <qwidgetplugin.h>

    class CustomListView : public QWidgetPlugin
    {
    public:
        CustomListView();

        QStringList keys() const;
        QWidget* create( const QString &classname, QWidget* parent = 0, const char* name = 0 );
        QString group( const QString& ) const;
        QIconSet iconSet( const QString& ) const;
        QString includeFile( const QString& ) const;
        QString toolTip( const QString& ) const;
        QString whatsThis( const QString& ) const;
        bool isContainer( const QString& ) const;
    };

und die plugin.pro:

Code: Alles auswählen

 
TEMPLATE = lib
LANGUAGE = C++
TARGET   = customlistview

SOURCES  += plugin.cpp ../ddlistbox.cpp
HEADERS  += plugin.h ../ddlistbox.h
DESTDIR   = $(QTDIR)/plugins/designer

target.path= targetdir

INSTALLS    += target
CONFIG      += qt warn_on release plugin
INCLUDEPATH += $$QT_SOURCE_TREE/tools/designer/interfaces
DBFILE       = plugin.db

Gruss, lucksus
vitalisator
Beiträge: 3
Registriert: 5. Mai 2005 12:46

Beitrag von vitalisator »

Habe das gleiche Problem und komme auch nicht weiter. :(
Ich habe versucht Das Plotter Widget aus den QT Exaples als QWidgetPlugin in den Designer zu integrieren.

Mein Code ist:

Code: Alles auswählen

#include <qwidgetplugin.h>

#include "../plotter.h" 

class PlotterPlugin : public QWidgetPlugin
{
public:
	PlotterPlugin();
	QStringList keys() const;
	QWidget *create(const QString &classname, QWidget *parent=0, const char *name=0);
	QString includeFile(const QString &) const;
	QString group(const QString &) const;
	QIconSet iconSet(const QString &) const;
	QString toolTip(const QString &) const;
	QString whatsThis(const QString &) const;
	bool isContainer(const QString &) const;
};

PlotterPlugin::PlotterPlugin()
{};

QStringList PlotterPlugin::keys() const
{
	return QStringList() << "Plotter";
}

QWidget *PlotterPlugin::create(const QString &key, QWidget *parent, const char *name)
{
	return new Plotter(parent, name);
}

QString PlotterPlugin::includeFile(const QString &) const
{
	return "plotter.h";
}

bool PlotterPlugin::isContainer(const QString &) const
{
	return false;
}

QString PlotterPlugin::group(const QString &) const
{
	return "Display";
}

QIconSet PlotterPlugin::iconSet(const QString &) const
{
	return QIconSet(QPixmap::fromMimeSource("plotter.png"));
}

QString PlotterPlugin::toolTip(const QString &) const
{
	return "Plotter Widget";
}

QString PlotterPlugin::whatsThis(const QString &) const
{
	return "Widget zur Wisualisierung von Daten als Plotter";
}

Q_EXPORT_PLUGIN(PlotterPlugin)
und die zugehörige Projektdatei von QMake

Code: Alles auswählen

TEMPLATE 		= lib
LANGUAGE 		= C++
TARGET   		= plotter

SOURCES 		+= plotterplugin.cpp ../plotter.cpp
HEADERS 		+= ../plotter.h
DESTDIR			= $(QTDIR)/plugins/designer

target.path		=$$plugins.path

INSTALLS    		+= target
CONFIG 			+= qt warn_on release plugin
INCLUDEPATH 	+= $$QT_SOURCE_TREE/tools/designer/interfaces
IMAGES			=plotter.png
DBFILE       		= plugin.db
vitalisator
Beiträge: 3
Registriert: 5. Mai 2005 12:46

Beitrag von vitalisator »

Hi!
Hab das Problem bei mir inzwischen gefunden
die Zeile

Code: Alles auswählen

CONFIG 			+= qt warn_on release plugin
musste geänder werden nach

Code: Alles auswählen

CONFIG 			+= qt warn_on release plugin thread
Dann erscheint das Plugin in QT Designer.

Weis nicht genau was es bedeutet, aber es hat glaub ich damit zu tun ob der Designer mit dieser Option kompiliert wurde oder nicht.
Die Plugins müssen dann genauso kompiliert werden.
Antworten