Для старого инструмента, использующего Qt 5.3.2, мы недавно столкнулись с проблемой. Используя менеджер QNetwork
, мы загружаем файлы, но перед тем, как загрузить их, мы проверяем, могут ли они быть загружены из определенного региона. Для этого мы делаем прерывание при самой первой индикации прогресса.
С недавних пор мы не получаем сигнал downloadProgress
после некоторых прерываний, и это происходит только при очень быстром сетевом соединении. По WiFi это не воспроизводит. В чем может быть проблема?
Некоторые фрагменты кода:
StartDownload:
networkManager->get(request);
networkReply->setReadBufferSize(4 * 1024 * 1024);
connect(networkReply, SIGNAL(finished()),
this, SLOT(onDownloadFinished()));
connect(networkReply, SIGNAL(downloadProgress(qint64, qint64)),
this, SLOT(onDownloadProgress()));
connect(networkReply, SIGNAL(error(QNetworkReply::NetworkError)),
this, SLOT(onDownloadError(QNetworkReply::NetworkError)));
connect(networkReply, SIGNAL(sslErrors(QList<QSslError>)),
this, SLOT(onDownloadSslErrors(QList<QSslError>)));
connect(networkReply, SIGNAL(encrypted()),
this, SLOT(onEncrypted()));
OnDownloadProgress:
void DownloadManager::onDownloadProgress()
{
networkReply->abort();
nrAborts++;
startDownload(myurl);
}
OnDownloadFinished:
void DownloadManager::onDownloadFinished()
{
networkReply->deleteLater();
}