Pergunta

Eu tenho o seguinte 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>");

Se o controlo remoto do arquivo é de 5 MB, ele funciona, bt se o arquivo é abot de 50 ou um de 500 mb, o programa salva só o primeiro de 22 de MBytes, enquanto o processo ainda faz o download do arquivo em segundo plano.

O que estou fazendo de errado?

Foi útil?

Solução

10 segundos pode não ser suficiente para fazer o download, dependendo da sua conexão de internet.Não use o timer como este.Para ver o efeito imediato, soltar estas linhas:

int timeInSeconds = 10;
QTimer *idleTimer = new QTimer(this);
connect(idleTimer,SIGNAL(timeout()),&loop,SLOT(quit()));
idleTimer->setInterval(timeInSeconds *1000);
idleTimer->start();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top