当在错误槽中启动事件循环时发生ContentNotFoundError时,QNetworkReply会发出两次错误信号。这是因为在事件循环中,QNetworkReply会在接收到错误信号后,再次触发错误信号。为了避免这种情况,可以使用QNetworkAccessManager的finished()信号来处理错误,而不是使用错误槽。
另外,如果使用错误槽处理错误,可以使用QNetworkReply的error()方法来获取错误类型,并根据错误类型进行处理。例如:
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QNetworkReply *reply = manager->get(QNetworkRequest(QUrl("http://www.example.com")));
connect(reply, &QNetworkReply::errorOccurred, [=](QNetworkReply::NetworkError error) {
if (error == QNetworkReply::ContentNotFoundError) {
// 处理ContentNotFoundError错误
} else {
// 处理其他错误
}
});
这样就可以避免QNetworkReply发出两次错误信号的问题。
领取专属 10元无门槛券
手把手带您无忧上云