Fehler: No such Signal

Alles rund um die Programmierung mit Qt
Antworten
Baz
Beiträge: 67
Registriert: 22. August 2007 14:21

Fehler: No such Signal

Beitrag von Baz »

Hallo! Ich habe ein Problem mit Signals und Slots. Folgender Beispielcode beschreibt meine Programmstruktur.

class Oberklasse : public QThread {
........Code........
};

class Unterklasse1 : public Oberklasse {
.........Code......
signals:
void meinSignal(QString);
};

class Unterklasse2 : public Oberklasse {
........Code........
public slots:
void meinSlot(QString);
};

int main() {

Unterklasse1 * class1 = new Unterklasse1();
Unterklasse2 * class2 = new Unterklasse2();

QObject::connect(class1, SIGNAL(meinSignal(QString()),
class2, SLOT(meinSlot(QString()));

}



Meine Oberklasse erbt von QThread. Es gibt zwei Unterklassen die jeweils von der Oberklasse erben.
In der main() will ich nun ein SIGNAL von der einen Unterklasse mit einem SLOT von der anderen Unterklasse verbinden.
Kompilieren tut das ganze. Zur Laufzeit krieg ich dann allerdings folgenenden Fehler:
Object::connect: No such slot Oberklasse::meinSlot(QString)

Was läuft falsch? und vor allem steht in der Fehlermeldung, dass die Oberklasse den SLOT nicht hat. Hat sie ja aber tatächlich nicht, denn Unterklasse2 besitzt meinSlot(QString) und bei ihr versuch ich ja auch zu connecten.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Q_OBJECT vergessen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Baz
Beiträge: 67
Registriert: 22. August 2007 14:21

Beitrag von Baz »

das hab ich aber nur in meiner beispielklasse hier vergessen :(
das steht in der Oberklasse!
in der main hab ich kein Q_OBJECT da braucht man es doch auch nicht oder?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn Du in einer Klasse ein signal oder slot definierst brauchst du dort auch ein Q_OBJECT...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
ObeliX
Beiträge: 59
Registriert: 14. November 2007 17:47

Beitrag von ObeliX »

und es müßte doch wohl

Code: Alles auswählen

 QObject::connect(class1, SIGNAL(meinSignal(QString),class2, SLOT(meinSlot(QString)); 
anstelle

Code: Alles auswählen

QObject::connect(class1, SIGNAL(meinSignal(QString()),class2, SLOT(meinSlot(QString())); 
heißen. oder ?

gruß Obel
Baz
Beiträge: 67
Registriert: 22. August 2007 14:21

Beitrag von Baz »

danke....hatte das Q_OBJECT nur in der Oberklasse stehen
Jetzt läuft es
Antworten