Seite 1 von 1

Probleme mit Connect und string als Parameter

Verfasst: 17. Dezember 2005 13:04
von fedderle
Ich muss durch mit einem Signal eine map<string, int> an einen Slot übergeben!
Hab das so realisiert:

Code: Alles auswählen

QObject::connect((this, SIGNAL(updateGuiTest(map<string, int>)), gui, SLOT(updateTest(map<string, int>)));
und dann hab ich natürlich auch noch ein

Code: Alles auswählen

emit(MyMap);
My map ist eine map<string, int> und die entprechenden Signaly und Slots hab ich auch im Header deklariert! Das ganz lässt sich auch ohne Probleme kompilieren aber ich bekommen dann folgende Meldung während der Laufzeit beim Aufruf des "emit":
QObject::connect: Cannot queue arguments of type 'map<string'

EDIT: Habe zum testen die maps mal ausgetauscht gegen strings! Auch strings erzeugen diese Meldung!!!!

Verfasst: 17. Dezember 2005 13:48
von Emperor_L0ser
bei deinem emit fehlt auch der zu übergende parameter

Code: Alles auswählen

int x = 4;
emit(MyFunc(x));
habe keine ahnung von maps, aber versuch mal ob es so mit einfachen strings geht

Verfasst: 17. Dezember 2005 14:27
von fedderle
Ups sory das is en tippfehler von mir! Hab natürlich en
emit myfunc(mymap);

Die sache ist die! das ganze geht nur dann nicht solamnge ich einen String mit uebegebe!
geht das nur mit QStrings? Weil mit QStrings gehts! nur dann muesste ich ja alles um casten!!!!

Verfasst: 17. Dezember 2005 16:21
von Emperor_L0ser
das ist äusserst interressant.

frag doch mal ab, ob das connect überhaupt funktioniert
also den rückgabewert von connect auszulesen

Verfasst: 17. Dezember 2005 18:26
von fedderle
Also wie gesagt! das connect ging wenn ich int genommen habe oihne probleme! nur wenn ich den Datentyp änder kommt während der Laufzeit der oben genannte Fehler!
Ich hab jetzt das Problem umgangen in dem ich mit zeigern arbeite! alos ich übergegenb keinen paramter mehr und les dann die daten die ich brauche ein in dem ich mir nen zeiger auf ne map durch ne funktion geben lasse!

Re: Probleme mit Connect und string als Parameter

Verfasst: 25. Januar 2008 07:14
von kitov
weiss dass ich bisschen zu spaet bin :-)
Loesung :
Typ registrieren .

Code: Alles auswählen

qRegisterMeatType<map<string, int> >("map<string, int>");