Porblem mit moc

Post Reply
Message
Author
Dominik Seichter

Porblem mit moc

#1 Post by Dominik Seichter »

Hi!

Ich möchte zu meinem Programm eine Plugin Schnittstelle hinzufügen. Die Plugin API steht schon, nur beim compilen der Plugin havbe ich Probleme.
Der kompilier vorgang bricht mit der folgendne Fehlermeldung ab.
datetime.moc.cpp: In method `void MyPlugin::initMetaObject()':
datetime.moc.cpp:34: `badSuperclassWarning' undeclared (first use this function)
datetime.moc.cpp:34: (Each undeclared identifier is reported only once
datetime.moc.cpp:34: for each function it appears in.)

Ich denke es fehlt einfach die Zeile "#include <qobject.h>" in der Date datetime.moc.cpp. Wie kann ich moc dazubringen die qobject.h zu includen (furchtbares Wort ;)?
Oder meint Ihr der Fehler liegt woanders.
Das Header File aus dem moc datetime.moc.cpp generiert sieht folgendermassen aus:

#ifndef DATETIME_H
#define DATETIME_H

#include "../../batchrenamer.h"
#include "../../pluginloader.h"
#include "../../plugin.h"


#include <stdio.h> // For FILE
#include <qobject.h>

class KDatePicker;
class KIntSpinBox;
class QCheckBox;
class QButtonGroup;
class QGroupBox;
class QLabel;
class QVBoxLayout;
class QHBoxLayout;
class QPushButton;
class QString;
class QWidget;

extern "C" Plugin* maker();


// Plugin class starts here
class MyPlugin: public Plugin {
Q_OBJECT
public:
QString getName();
int type();

bool checkError();
void drawInterface( QWidget* w, QVBoxLayout* l );
QString processFile( values* val, int i, QString token );

protected:
QCheckBox* checkAccess;
QCheckBox* checkModification;
KDatePicker* kDate;
QLabel* labelTime;
KIntSpinBox* spinHour;
KIntSpinBox* spinMinute;
KIntSpinBox* spinSecond;
QPushButton* buttonCurrentDT;

// ----
QHBoxLayout* Layout0;
QVBoxLayout* Layout1;
QHBoxLayout* Layout2;
};
#endif

Die Klasse Plugin sieht folgendermassen aus:
#ifndef PLUGIN_H
#define PLUGIN_H

#include "batchrenamer.h"

#include <qobject.h>

class QString;
class QWidget;
class QVBoxLayout;
class Plugin {
Q_OBJECT
public:

virtual QString getName() = 0;
virtual int type() = 0;

virtual bool checkError() = 0;
virtual void drawInterface( QWidget* w, QVBoxLayout* l ) = 0;
virtual QString processFile( values* val, int i, QString token ) = 0;
};

#endif

Irgendwelche Ideen ?

CU Dom

Dominik Seichter

Re: Porblem mit moc

#2 Post by Dominik Seichter »

Hi!

Hab die Lösung gefunden! Plugin muss so aussehen:
class Plugin : public QObject {
...
};

Warum bin ich da nicht vorher (und die ganze letzte Woche) draufgekommen ? *wunder*

CU Dom

Post Reply