连接丢失时未检测到 QNetworkReply 错误信号
QNetworkReply error signal not detected when connection is lost
我正在使用 Qt5.5 从远程服务器下载文件,一切正常,但我无法检测到 QNetworkReply returns 何时出错。
事实上,我正在尝试检查用户是否正在下载文件并且突然失去了互联网连接(因为为什么不这样:-))。为此,我开始下载并在几秒钟后拔下以太网电缆。
在这种情况下是否发出了信号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(),但如果没有互联网了,我不会进入任何插槽。
我是不是做错了什么?
好吧,没关系,我做错了。因为我想检查互联网连接,所以我必须通过 QNetworkAccessManager
检查网络可用性,方法是:
QNetworkConfigurationManager manager;
pManager.setConfiguration(manager.defaultConfiguration());
connect(&pManager, SIGNAL(networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility)), this, SLOT(networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility)));
并且当网络出现故障时,我会在相应的插槽中。
我正在使用 Qt5.5 从远程服务器下载文件,一切正常,但我无法检测到 QNetworkReply returns 何时出错。 事实上,我正在尝试检查用户是否正在下载文件并且突然失去了互联网连接(因为为什么不这样:-))。为此,我开始下载并在几秒钟后拔下以太网电缆。
在这种情况下是否发出了信号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(),但如果没有互联网了,我不会进入任何插槽。
我是不是做错了什么?
好吧,没关系,我做错了。因为我想检查互联网连接,所以我必须通过 QNetworkAccessManager
检查网络可用性,方法是:
QNetworkConfigurationManager manager;
pManager.setConfiguration(manager.defaultConfiguration());
connect(&pManager, SIGNAL(networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility)), this, SLOT(networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility)));
并且当网络出现故障时,我会在相应的插槽中。