连接丢失时未检测到QNetworkReply错误信号

时间:2016-03-10 10:32:37

标签: qt qnetworkaccessmanager qnetworkreply

我正在使用Qt5.5从远程服务器下载文件,一切正常但我无法检测到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(),但如果不再有互联网,我不会进入任何插槽。

我做错了吗?

1 个答案:

答案 0 :(得分:1)

好的,没关系,我做错了。由于我想检查互联网连接,我必须通过QNetworkAccessManager检查网络可用性,方法是:

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

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

当互联网发生故障时,我将进入相应的插槽。