Russian Qt Forum
Ноябрь 24, 2024, 02:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Загрузка файлов через QNetworkAcessManager  (Прочитано 3649 раз)
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();

}

Дальше  - ступор. Как дождаться загрузки файла, и вывести его имя?
Спасибо.
Записан
BRE
Гость
« Ответ #1 : Март 20, 2010, 23:26 »

Посмотри это обсуждение:
http://www.forum.crossplatform.ru/index.php?showtopic=4255
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.042 секунд. Запросов: 21.