Seite 1 von 1
Struct als Signal
Verfasst: 25. Juli 2007 09:38
von archon
Hallo,
eine kurze Frage kann ich ein Struct z.B.
Code: Alles auswählen
struct feedback
{
uint16 response;
uint8 cmd_id;
} feedback_struct;
als signal definieren...geht das überhaupt?
Gruss
Verfasst: 25. Juli 2007 09:59
von Christian81
Ja, das geht - die Typprüfung funktioniert nur über Strings.
Verfasst: 25. Juli 2007 10:48
von archon
Also im slot darf doch nur ein datentyp stehen oder? also z.B. &QString kann ich da einfach struct übergeben?
Hast Du vielleicht ein Beispiel?
Code: Alles auswählen
connect ( &datalink, SIGNAL( response(struct &)), this, SLOT ( validate(struct &)));
geht nicht
Verfasst: 25. Juli 2007 10:50
von Christian81
Geht nicht ... mal wieder ne super Aussage
Was sagt die Konsole während der Laufzeit?
Verfasst: 25. Juli 2007 10:57
von archon
also anscheinend geht jetzt das connecten doch nur hab ich jetzt noch ein problem bei der deklaration des signals:
liefert
Multiply markers at this line
-error: variable of field 'response' declared void
-error: expected ';' before '(' token
Verfasst: 25. Juli 2007 11:02
von Christian81
Können wir jetzt kein C ? Den Strukturnamen sollte man irgendwie schon angeben...
Verfasst: 25. Juli 2007 11:03
von archon
hö? bei der deklaration muss ich doch keinen namen eintragen?
Verfasst: 25. Juli 2007 11:04
von archon
was meinst du mit irgendwie?
Verfasst: 26. Juli 2007 00:23
von FloGrobosch
Also vielleicht äußere ich mich hier ja jetzt unqualifiziert, aber wenn ich eigenen Datentypen übergebe, dann doch per Name des Datentyps?!
Also in deinem Fall dann wohl "feedback_struct".
Code: Alles auswählen
QObject::connect( this, SIGNAL( bla( feedback_struct & )), that, SLOT( bla2( feedback_struct &) ) );
Das Signal sähe dann dem entsprechend auch so aus:
Da Qt diesen Datentyp noch nicht kennt, musst du vorher wohl noch den metatype registrieren
Code: Alles auswählen
qRegisterMetaType<feedback_struct>("feedback_struct");
So mach ich das zumindest mit meinen Klassen immer...
Gruß, Flo[/code]
Verfasst: 26. Juli 2007 08:57
von NoobSaibot
im grunde hast du recht. jedoch ist der datentyp feedback und feedback_struct ist eine variable.
Verfasst: 26. Juli 2007 08:57
von archon
Ah na das hab ich nicht gewusst, soweit mal vielen Dank!
Verfasst: 26. Juli 2007 09:00
von Christian81
Bin mir nicht ganz sicher, aber qRegisterMetaType() ist dafür nicht nötig.