Я создал запрос POST и подключаюсь к законченный() сигнал:
QNetworkReply *reply = manager->post(request, postData.encodedQuery());
connect(reply, SIGNAL(finished()), this, SLOT(accept()));
Я хочу получать уведомления о завершении запроса POST независимо от того, был ли он неудачным или успешным.
Я заметил в документации, что есть также QNetworkReply :: Ошибка () сигнал, нужно ли к нему тоже подключиться или будет finished()
называться во всех случаях?
Документация Qt гласит:
void QNetworkReply :: error (QNetworkReply :: NetworkError code) [сигнал]
Этот сигнал испускается, когда ответ обнаруживает ошибку в обработке.
Вероятно, последует сигнал завершения (), указывающий, что
соединение окончено.
Из того, что я видел в источниках Qt (недавно проверял абсолютно одну и ту же проблему), везде после error () после этого есть вызов Finish (). В 5.1.0 я не нашел места, где за ошибкой не следует завершение ()
например
void QNetworkReplyImpl::close()
{
Q_D(QNetworkReplyImpl);
if (d->state == QNetworkReplyImplPrivate::Aborted ||
d->state == QNetworkReplyImplPrivate::Finished)
return;
// stop the download
if (d->backend)
d->backend->closeDownstreamChannel();
if (d->copyDevice)
disconnect(d->copyDevice, 0, this, 0);
QNetworkReply::close();
// call finished which will emit signals
d->error(OperationCanceledError, tr("Operation canceled"));
d->finished();
}
Документация для error()
говорит: finished()
сигнал, вероятно, последует «, так что нет, finished()
должно быть достаточно. Не забудьте проверить error()
однако, получатель в обработчике сигналов.