문제

코드는 다음과 같습니다.

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

리모트 파일이 5MB 인 경우, BT는 파일이 ABOT 50 또는 500MB 인 경우, 프로그램은 처음 22MB만을 저장하고 프로세스가 여전히 백그라운드에서 파일을 다운로드합니다.

무엇을 잘못하고 있습니까?

도움이 되었습니까?

해결책

10 초는 인터넷 연결에 따라 모든 것을 다운로드하기에 충분하지 않을 수 있습니다.타이머를 사용하지 마십시오.즉각적인 효과를 보려면이 줄을 놓으십시오.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top