SIGNALS und arrays

Alles rund um die Programmierung mit Qt
Antworten
dave007as
Beiträge: 6
Registriert: 14. April 2007 13:13

SIGNALS und arrays

Beitrag von dave007as »

Hallo zusammen,

ich habe folgendes Problem. Momentan versuche ich ein Array zwischen zwei QGLWidgets hin und her zu senden. Der Sinn und Zweck davon sollte zunächst keine Rolle spielen.
Dazu habe ich ein SIGNAL sendArray(double M[16]) definiert , welches das Senden übernehmen soll und einen SLOT processArray(double M[16]), der das empfangene Array verarbeiten soll.

Die beiden QGLWidgets connecte ich in meiner Window.cpp via
connect(left, SIGNAL(sendArray(double[16])), right, SLOT(processArray(double[16])));

Ich habe jetzt festgestellt, dass das, was ich mit meinem SIGNAL sende, nicht mit dem übereinstimmt, was bei meinem SLOT ankommt.

Wenn also z.B
double M[16] = {1, 1, 1, ...., 1};
emit sendArray(M);

dann zeigt mir der VisualStudio Debugger beim Aufruf des SLOTS processArray(double M[16]) nur den Wert 2.6056750241814294e-308 an.

Hat irgendjemand von euch eine Idee, was ich da falsch mache?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

C Array in einem Signal/Slot? Das geht bestitmmt irgendwie (und ggf. sogar so wie Du es beschrieben hast), aber QList<double> würde auf alle Fälle gehen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
tachyon
Beiträge: 29
Registriert: 22. Juli 2006 10:03

Beitrag von tachyon »

Also ich würde ja eher QVector für die beschriebene Mimik nehmen. Eine Liste ist da etwas uberkandidelt.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

dave007as
Beiträge: 6
Registriert: 14. April 2007 13:13

Beitrag von dave007as »

Mit der Signatur sendArray(double*) bzw. processArray(double*) funktioniert es mittlerweile.
QVector und so weiter wäre zwar einen Versuch wert gewesen, aber da ich mit ModelView Matrizen in OpenGL arbeite sind C Arrays für den Zweck einfach angebrachter.
Danke für Eure Hilfe!

Gruß,
Dave
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich schätze mal dass bei der Normalisierung das [16] wegfällt und somit danach die Signatur nicht mehr passt. double* ist aber auch nicht wirklich type-safe. Aber Du arbeitest ja eh mit C-Arrays - da ist ja eh nichts safe und man muss genau aufpassen :)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten