یه مسئله دیگه، اصلا نیازی به QThread نیست.
اگه میخواهید این کار رو داخل threadانجام بدید به این شکل عمل کنید:
bool WebService::downloadFile(QString serverAddress, QString localAddress)
{
QNetworkAccessManager accessManager;
QEventLoop loop;
connect(&accessManager, SIGNAL(finished(QNetworkReply*)), &loop, SLOT(quit()));
QNetworkReply *reply = accessManager.get(QNetworkRequest(QUrl(serverAddress)));
loop.exec();
QFile file(localAddress);
if(file.open(QIODevice::WriteOnly)){
file.write(reply->readAll());
file.close();
return true;
}else{
return false;
}
}
در غیر اینصورت و بدون thread نیاز به یه کانکت هست که از اتمام کار مطلع شوید.
_manager = new QNetworkAccessManager(this);
connect(_manager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(replyFinished(QNetworkReply*)));