Задача такая: реализовать загрузку файла через QNetworkAcessManager, при этом, функция, которая должна "загружать" файл, должна делать следующее:
1) начинаем загрузку файла
2)показываем QProgressDialog
3)дожидаемся окончания загрузки файла
4)возвращаем QString с именем файла.
При этом нужно "заморозить" программу, то есть делать все в одном потоке (без загрузки важного файла нет смысла продолжать). Сейчас с этим успешно справляется wget, но я не могу взять с него данные, да и UI программы зависает на время загрузки.
Пока что я написал такую функцию:
QString engine::downloadWine(QString url)
{
//progress - член класса
QFileInfo inf (url);
QString wineFileName = inf.fileName();
//проверяем, есть ли у нас данный файл
if (QFile::exists(TMP + QDir::separator() + wineFileName))
return wineFileName;
*progress = new QProgressDialog(0);
QNetworkAccessManager *manager = new QNetworkAccessManager (this);
QNetworkRequest req; //request для Url
req.setUrl(QUrl(url));
req.setRawHeader("User-Agent", "Winegame-Browser 0.1");
QNetworkReply *reply = manager->get(req);
connect (reply, SIGNAL(downloadProgress(qint64,qint64)), progress, SLOT(setRange(int,int)));
progress->setLabelText(tr("Downloading %1").arg(url));
QPushButton *but = new QPushButton (progress);
but->setFlat(true);
but->setDisabled(false);
but->setText("");
progress->setCancelButton(but);
progress->show();
}
Дальше - ступор. Как дождаться загрузки файла, и вывести его имя?
Спасибо.