QNetworkAccessManager不发出信号

QNetworkAccessManager does not emit signal

本文关键字:信号 QNetworkAccessManager      更新时间:2023-10-16

所以我有这个代码:

QUrl url("http://...");
QNetworkRequest request(url);
QNetworkReply *reply = m_networkManager->get(request);
connect(reply, SIGNAL(finished()), SLOT(onRequestCompleted()));
connect(reply,SIGNAL(error(QNetworkReply::NetworkError)),SLOT(onError(QNetworkReply::NetworkError)));

我无法获得另一功能的信号

void IpResolver::onRequestCompleted()
{
QString webContent;
QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
if (reply)
{
    if (reply->error() == QNetworkReply::NoError)
    {
        QString webContent = reply->readAll();
    }
}
}

我想不出解决办法,请帮忙。

我不知道你到底想要什么,但是:

  1. 为什么使用回复指针而不是某种onRequestCompleted(QNetworkReply *reply)
  2. 如果你这样做:

    QUrl url("http://...");
    QNetworkRequest request(url);
    connect(m_networkManager, &QNetworkAccessManager::finished, this, &IpResolver::onRequestCompleted);
    m_networkManager->get(request);
    
  3. 您的插槽将是,例如:

    void IpResolver::onRequestCompleted(QNetworkReply *reply)
    {
        QString webContent;
        if (reply->error() == QNetworkReply::NoError)
            webContent = reply->readAll();
    }