2016-03-10 2 views
0

Я загружаю файлы с удаленного сервера с Qt5.5, и все работает нормально, но я не могу обнаружить, когда QNetworkReply возвращает ошибку. На самом деле, я пытаюсь проверить случай, если пользователь загружает файл, и вдруг он теряет интернет-соединение (потому что почему бы и нет :-)). Для этого я запускаю загрузку и отсоединяю свой кабель Ethernet через несколько секунд.QNetworkReply сигнал ошибки не обнаружен, когда соединение потеряно

Возникает ли в этом случае сигнал QNetworkReply::error(QNetworkReply::NetworkError)? Если да, то почему я не вхожу в свой слот в моем коде ниже?

void MyClass::download(QUrl url) 
{ 
    QNetworkRequest request = QNetworkRequest(url); 

    QNetworkReply *reply = pManager.get(request); 

    // finished() is called after error(), but try both 
    connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(requestError(QNetworkReply::NetworkError))); 
    connect(reply, SIGNAL(finished()), this, SLOT(requestFinished())); 
} 

void MyClass::requestError(QNetworkReply::NetworkError err) 
{ 
    qDebug() << "error"; 
} 

void MyClass::requestFinished() 
{ 
    qDebug() << "finished"; 
} 

Я также подключен диспетчер доступа, как это:

connect(&pManager, SIGNAL(finished(QNetworkReply*)), SLOT(requestFinished(QNetworkReply*))); 

Когда Интернет-соединение не прерывается, я иду в слот requestFinished(), но если не Интернет больше, я не входя в любой слот.

Я что-то не так?

ответ

0

Хорошо, неважно, я делал это неправильно. Так как я хочу, чтобы проверить подключение к Интернету, я должен проверить доступность сети с помощью QNetworkAccessManager, делая это:

QNetworkConfigurationManager manager; 
pManager.setConfiguration(manager.defaultConfiguration()); 

connect(&pManager, SIGNAL(networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility)), this, SLOT(networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility))); 

И когда Интернет ломается, я буду в соответствующем слоте.

 Смежные вопросы

  • Нет связанных вопросов^_^