Wie kann ich auf das Signal warten?
Gar nicht !
Grundlagen GUI programmierung:
Dein programm(Mainthread) befindet sich immer in einer quasi endlos schleife (Windows msgqueue / QT eventqueue) durch "Ereignisse"(usereingabe, Ereignissen von geraeten, "Signale" von aussen) wird dein Mainthread aus der queue geworfen und landet in einer von Dir bereitgestellten Nachrichtenbehandlungsroutine. Wenn die fertig ist, versinkt der thread wieder in der endloasschleife.
Dieses Prinzip sollte dir bei der GUI programmierung (im gegensatz zu den meisten konsolen programmen) ins Blut uebergehen, das brauchst immer wieder.
http://en.wikipedia.org/wiki/Event-driven_programming
Also Fazit, herkoemmliches warten iss nicht. Warten wird umgesetzt durch:
- befehl absetzen, thread in der versenkung verschwinden lassen.
- "ErfolgsmeldeEvent" abfangen und in eigener Routine abhandeln,
- Folge FUnktionalitaet anstossen, bzw Fehlermeldungen generieren.
- Oberflaeche immer auf den (logischen)Status deiner Operation anpassen.
Folgenden prinzipiellen Aufbau braeuchtest Du:
1. - start operation, als slot oder ahnliches
- irgendwo hasst ne struktur aus verzeichnissen und Dateien die zum server uebertragen werden.
- du setzt nen Zeiger / Indikator auf das oberste element(verzeichniss oder datei) zum uebertragen
- du schaltest alle userelemente die stoeren keonnten inaktiv, bzw stellllst sogar noch ein neuese zum abbrechen der Operation zur verfuegung.
- du rufst eine funktion zum abarbeiten deiner Struktur auf.
- danach entlaesst den thread
2. deine funktion zum abarbeiten koennte so aussehen:
- due nimmst das element auf den dein interner Zeiger/indikator zeigt
- je nachdem welcher typ (datei | verzeichniss) rufst du put oder mkdir am Qftp auf.
- du entalesst den thread wieder in die aufruffunktion
3. die reaktion auf das done(Signal -> Slot) koennte so aussehen.
- Result ok -> Zeiger auf der Struktur aufs naechste element setzen
- FUnktion zum abarbeiden deiner Struktur wieder aufrufen.
- result nicht ok. Fehlerstatis setzen, msgbox bringen oder irgendwas. und bedienelemente wieder freigeben. (kann / sollt man auch in ne eigene funktion auslagern)
- Result ok, und zeiger war scho auf dem letzten element -> Erfolgsmeldung und bedienelemente wieder freigeben.
Prinzip verstanden ?
Eigentlich wird dein Fenster damit zum FSM
http://de.wikipedia.org/wiki/Endlicher_Automat
Leute die damit scho mal was zu tun hatten, tun sich da vielleicht leichter.
Ciao ...