Problem mit QFtp bei dataTransferProgress mit Progressbar

Alles rund um die Programmierung mit Qt
felixwiewel
Beiträge: 10
Registriert: 11. November 2008 15:45

Problem mit QFtp bei dataTransferProgress mit Progressbar

Beitrag von felixwiewel »

Hi,
ich hab folgendes Problem:
wenn ich mit QFtp::get() Etwas downloade lädt er erst die Datei herunter und fragt dann nach einem Speicherort. Das ist auch so gewollt doch obwohl ich das Signal von QFtp::dataTransferProgress abfange und beide Variablen verwende bekomme ich als gesamtBytes immer -1 zurück. Die Datei befindet sich allerdings in einwandfreiem Zustand auf meiner Platte.
Ich möchte mit dieser Funktion den Progressbar ansteuern:

Code: Alles auswählen

void MainWindow::progress(qint64 doneBytes, qint64 totalBytes)
 {
     if (totalBytes != -1)
     {
        ui->progressBar->setMaximum(100);
        ui->progressBar->setValue(doneBytes/totalBytes*100); //Verhältnis der Bytes zueinander *100 = % der gesamten Bytes
     }
     else
     {
         ui->progressBar->setRange(0,0);
     }
 }
Die Funktion verbinde ich so mit dem Signal:

Code: Alles auswählen

connect(ftp,SIGNAL(dataTransferProgress(qint64 ,qint64 )),this,SLOT(progress(qint64 ,qint64 )));
Hoffe mir kann Jemand weiter helfen!
Vielen Dank im Vorraus.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Was meinst Du mit 'gesamtBytes' - totalBytes ?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
felixwiewel
Beiträge: 10
Registriert: 11. November 2008 15:45

Beitrag von felixwiewel »

Ja die werden von dem Signal übergeben:

Code: Alles auswählen

void QFtp::dataTransferProgress ( qint64 done, qint64 total )   [signal]
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Vielleicht unterstützt der ftp-Server das nicht.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
felixwiewel
Beiträge: 10
Registriert: 11. November 2008 15:45

Beitrag von felixwiewel »

Doch gFtp (ein FTP-Client) zeigt mir den Fortschritt an. Es liegt also nicht am Server.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Steht wirklich -1 drin oder:
Qt-Doku hat geschrieben: done is the amount of data that has already been transferred and total is the total amount of data to be read or written. It is possible that the QFtp class is not able to determine the total amount of data that should be transferred, in which case total is 0. (If you connect this signal to a QProgressBar, the progress bar shows a busy indicator if the total is 0).

Warning: done and total are not necessarily the size in bytes, since for large files these values might need to be "scaled" to avoid overflow.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
felixwiewel
Beiträge: 10
Registriert: 11. November 2008 15:45

Beitrag von felixwiewel »

Ja da ich ja darauf Prüfe ob -1 drin steht. Das mache ich mit dem If in Zeile 3.

Code: Alles auswählen

void MainWindow::progress(qint64 doneBytes, qint64 totalBytes)
 {
     if (totalBytes != -1)
     {
        ui->progressBar->setMaximum(100);
        ui->progressBar->setValue(doneBytes/totalBytes*102400);
     }
     else
     {
         ui->progressBar->setRange(0,0);
     }
 }
Es wird immer der Befehl nach dem Else ausgeführt. Skaliert wird es ja auch.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn Du die aktuellste Qt-Version benutzt ist es dann ggf. ein Fehler -> Bugreport an Nokia schreiben.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
felixwiewel
Beiträge: 10
Registriert: 11. November 2008 15:45

Beitrag von felixwiewel »

Ein Bug ist es auch nicht da dieses Signal nichts neues ist es ist schon seit Qt 4.0 dabei und in anderen Programmen wird es auch verwendet.
http://board.gulli.com/thread/1264589-q ... attformen/
Hier wird genau die gleiche Funktion benutzt allerdings wird nichts von diesem Fehler gesagt. Auch bei der Uni Köln wird die funktion verwendet.
http://old.hki.uni-koeln.de/teach/ws060 ... tp.cpp.txt
Es muss was mit meinem Code zu tun haben.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Du bist lustig :)
Nur weil es schon ewig dabei ist heißt es nicht dass sich nicht doch ein Fehler eingeschlichen hat. Und wenn Du -1 bekommst - was willst du mehr machen??
Es gibt ein ftp-Example zusammen mit dem Qt-Sourcecode. Das kannst du ja auch mal ausprobieren...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
felixwiewel
Beiträge: 10
Registriert: 11. November 2008 15:45

Beitrag von felixwiewel »

Das Beispiel hab ich mir schon durchgelesen allerdings wird da dieses Signal auch so verwendet. Und ich glaube das die es nicht mit aufgenommen hätten wenn es nicht funktionieren würde.

EDIT: Ich habe mal den kompletten Code hochgeladen vllt hilft das:
http://rapidshare.com/files/292511382/code.zip.html
Zuletzt geändert von felixwiewel am 13. Oktober 2009 18:01, insgesamt 3-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Dann probiere mit dem Beispiel mal von dem FTP-Server runterzuladen wo Du -1 zurückbekommst - ist das so schwer?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
felixwiewel
Beiträge: 10
Registriert: 11. November 2008 15:45

Beitrag von felixwiewel »

Das Problem ist das ich das nicht für Linux complimiert gefunden habe sondern nur den Quellcode und den kann ich nicht ausführen da mir Resourcen fehlen.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Gute Ausrede - als ob 3 pngs wirklich stören wenn sie nicht da sind
Na mach was Du willst... :roll:
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
felixwiewel
Beiträge: 10
Registriert: 11. November 2008 15:45

Beitrag von felixwiewel »

Tut mir Leid wenn ich dich verärgert habe aber ich habs einfach nicht ans laufen bekommen.
Antworten