Seite 1 von 1

[gelöst]QList<QUrlInfo> SIGNAL empfangen --> FEHLER

Verfasst: 16. August 2010 13:21
von Alex66955
Hallo Community,

Ich habe einen Thread gebastelt der eine Klasse erstellt und auf ein bestimmtes Signal dieser Klasse wartet.
Dafür habe ich nach der erzeugung des Objekt der Klasse ein connect mit entsprechenden Parametern angegeben und anschliesen einen EventLoop implementiert das der Thread nicht geschlossen wird.

Das Problem ist das ich eine Fehlermeldung während der Laufzeit bekomme welche besagt "warning: QObject::connect: Cannot queue arguments of type 'QList<QUrlInfo>'\n(Make sure 'QList<QUrlInfo>' is registered using qRegisterMetaType().)\n"

Soviel wie das der Datentyp nicht bekannt sei und ich es über qRegisterMetaTyp erst deklarieren muss??

Das komische dabei ist wenn ich kein Thread erstelle und auf das Signal warte funktioniert es einwandfrei

Weis wer Rat?

Code: Alles auswählen

void SearchVehicle::run() {
    connectToFtp = new ConnectFtp();
    connect(connectToFtp, SIGNAL(readyToAction(QList<QUrlInfo>,QList<QUrlInfo>)), this,SLOT(test()));
    
    connectToFtp->setSettings(ftpSettings);
    connectToFtp->startConnect();

    exec();
}
Das Signal wird auf jedenfall ausgeführt sonst würde nicht die Fehlermeldung kommen.

Verfasst: 16. August 2010 15:26
von Christian81
Du hast die Fehlermeldung korrekt interpretiert. Wenn kein Thread werden die Daten auch nicht gequeued (blödes Wort) da dann automatisch Qt::DirectConnection benutzt wird.

Verfasst: 17. August 2010 08:15
von Alex66955
Christian81 hat geschrieben:Du hast die Fehlermeldung korrekt interpretiert. Wenn kein Thread werden die Daten auch nicht gequeued (blödes Wort) da dann automatisch Qt::DirectConnection benutzt wird.
Und wie müsste das konkret aussehen
Bsp. für:

Code: Alles auswählen

connect(connectToFtp, SIGNAL(readyToAction(QList<QUrlInfo>, QList<QUrlInfo>)), this, SLOT(addVehicleFileInfo(QList<QUrlInfo>)));

Hab schon ein wenig rumgetüffelt komme aber nicht zu einem runden Ende

Verfasst: 17. August 2010 08:31
von Christian81
Was wie korrekt aussehen? Der connect ist doch korrekt... connectToFtp laeuft im neuen Thread, this läuet im Hauptthread (wenn das nicht klar ist -> Foren-Suche!!), connect ist mit AutoConnect, also QueuedConnection. Wenn Du was anderes willst sag es.

Verfasst: 17. August 2010 08:36
von padreigh

Verfasst: 17. August 2010 08:40
von Alex66955
padreigh hat geschrieben:Vielleicht hilft das?
http://doc.qt.nokia.com/4.6/qmetatype.html#details
Ja hab ich mir durchgelesen wurde daraus nur nicht schlau. Im nachhinein würde ich sagen klar so stehts in der Doku aber mann muss ja erstmal die theorie in die Praxis umsetzen und das fällt einem manchmal schwer.

Wie auch immer hab die Lösung gefunden

Code: Alles auswählen

qRegisterMetaType<QList<QUrlInfo> > ("QList<QUrlInfo>");
Danke an alle Tips