Russian Qt Forum

Qt => Работа с сетью => Тема начата: pashazz от Март 20, 2010, 22:49



Название: Загрузка файлов через QNetworkAcessManager
Отправлено: pashazz от Март 20, 2010, 22:49
Задача такая: реализовать загрузку файла через 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();

}

Дальше  - ступор. Как дождаться загрузки файла, и вывести его имя?
Спасибо.


Название: Re: Загрузка файлов через QNetworkAcessManager
Отправлено: BRE от Март 20, 2010, 23:26
Посмотри это обсуждение:
http://www.forum.crossplatform.ru/index.php?showtopic=4255