Domanda

Ho il codice seguente:

QNetworkAccessManager *nam = new QNetworkAccessManager(this);
QNetworkReply *re = nam->get(QNetworkRequest(QUrl("http://somesite/ai.bin")));
QEventLoop loop;
QObject::connect(reply, SIGNAL(readyRead()), &loop, SLOT(quit()));
int timeInSeconds = 10;
QTimer *idleTimer = new QTimer(this);
connect(idleTimer,SIGNAL(timeout()),&loop,SLOT(quit()));
idleTimer->setInterval(timeInSeconds *1000);
idleTimer->start();
loop.exec();

//save
QFile file("C:/a.jpg");
file.open(QIODevice::WriteOnly);
file.write(re->readAll());

ui->dbgOut->insertHtml("<font color='green'>OK</font><br>");
.

Se il file remoto è di 5 MB, funziona, BT se il file è abot 50 o 500 MB, il programma salva solo i primi 22 Mbyte, mentre il processo scarica ancora il file in background.

Cosa sto facendo male?

È stato utile?

Soluzione

10 secondi potrebbe non essere sufficiente per scaricarlo tutto, a seconda della connessione Internet.Non usare il timer come questo.Per vedere l'effetto immediato, lascia cadere queste linee:

int timeInSeconds = 10;
QTimer *idleTimer = new QTimer(this);
connect(idleTimer,SIGNAL(timeout()),&loop,SLOT(quit()));
idleTimer->setInterval(timeInSeconds *1000);
idleTimer->start();
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top