Pregunta

Tengo el siguiente código:

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>");

Si el archivo remoto es de 5 MB, funciona, BT Si el archivo está abot 50 o 500MB, el programa guarda solo los primeros 22 MBytes, mientras que el proceso aún descarga el archivo en segundo plano.

¿Qué estoy haciendo mal?

¿Fue útil?

Solución

10 segundos puede no ser suficiente para descargarlo todo, dependiendo de su conexión a Internet.No use el temporizador como este.Para ver el efecto inmediato, suelte estas líneas:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top