Struct als Signal

Alles rund um die Programmierung mit Qt
Antworten
archon
Beiträge: 117
Registriert: 22. August 2006 12:01

Struct als Signal

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ja, das geht - die Typprüfung funktioniert nur über Strings.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
archon
Beiträge: 117
Registriert: 22. August 2006 12:01

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Geht nicht ... mal wieder ne super Aussage :roll:

Was sagt die Konsole während der Laufzeit?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
archon
Beiträge: 117
Registriert: 22. August 2006 12:01

Beitrag von archon »

also anscheinend geht jetzt das connecten doch nur hab ich jetzt noch ein problem bei der deklaration des signals:

Code: Alles auswählen

signals:
		void response(const struct &);
liefert

Multiply markers at this line
-error: variable of field 'response' declared void
-error: expected ';' before '(' token
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Können wir jetzt kein C ? Den Strukturnamen sollte man irgendwie schon angeben...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
archon
Beiträge: 117
Registriert: 22. August 2006 12:01

Beitrag von archon »

hö? bei der deklaration muss ich doch keinen namen eintragen?
archon
Beiträge: 117
Registriert: 22. August 2006 12:01

Beitrag von archon »

was meinst du mit irgendwie?
FloGrobosch
Beiträge: 8
Registriert: 24. Juli 2007 10:38

Beitrag 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:

Code: Alles auswählen

signals:
 void bla( feedback_struct & );
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]
NoobSaibot
Beiträge: 99
Registriert: 27. Januar 2005 15:55

Beitrag von NoobSaibot »

im grunde hast du recht. jedoch ist der datentyp feedback und feedback_struct ist eine variable.
archon
Beiträge: 117
Registriert: 22. August 2006 12:01

Beitrag von archon »

Ah na das hab ich nicht gewusst, soweit mal vielen Dank!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Bin mir nicht ganz sicher, aber qRegisterMetaType() ist dafür nicht nötig.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten