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

Alles rund um die Programmierung mit Qt
Antworten
Alex66955
Beiträge: 56
Registriert: 23. September 2009 14:48

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

Beitrag 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.
Zuletzt geändert von Alex66955 am 17. August 2010 08:41, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Alex66955
Beiträge: 56
Registriert: 23. September 2009 14:48

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

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh »

Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
Alex66955
Beiträge: 56
Registriert: 23. September 2009 14:48

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