Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > QNetworkAccessManager


Автор: loneybibi 17.6.2011, 18:23
Функция получает текст из файла по ссылке. 
Но при отсутствии сети программа зависает. 
Как сделать что бы если сеть отсутствует просто проигнорировать дальнейшее выполнение.

QString MainWindow::downloadFileToString(QString strRequest)
{
    QNetworkAccessManager manager;
    QNetworkRequest request(strRequest);
    QNetworkReply *reply=manager.get(request);
    reply->deleteLater();
    QEventLoop loop;
    connect(&manager,SIGNAL(finished(QNetworkReply*)),&loop,SLOT(quit()));
    loop.exec();
    return(reply->readLine());
}

Автор: loneybibi 18.6.2011, 07:43
Решил проблему добавлением проверки на ошибки после get() до цикла.

Код

QString MainWindow::downloadFileToString(QString strRequest)
{
    QNetworkAccessManager manager;
    QNetworkRequest request(strRequest);
    QNetworkReply *reply=manager.get(request);

    if(reply->error()>0){return("Error");}

    reply->deleteLater();
    QEventLoop loop;
    connect(&manager,SIGNAL(finished(QNetworkReply*)),&loop,SLOT(quit()));
    loop.exec();
    return(reply->readLine());
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)