使用QNetWorkAccessManager将值传递到插槽

Meg*_*lik 0 qt qt-signals

我正在尝试使用QsignalMapper在完成的SIGNAL上将我的String传递给img_loaded函数。但是我没有任何结果,请帮忙。

   QString mystring = "value";
   QNetworkAccessManager *m_netwManager = new QNetworkAccessManager(this);
   QUrl url("http://images.gs-cdn.net/static/albums/80_9299765.jpg");
   QNetworkRequest request(url);
   connect(m_netwManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(img_loaded(QNetworkReply*)));

void MainWindow::img_loaded(QNetworkReply *rep){
   //Handle my String here
}
Run Code Online (Sandbox Code Playgroud)

小智 5

如果要提供其他参数来标识networkReply,请尝试以下操作:

void myClass::downloadMedia(QString url, int mediaType, int messageID)
{
    bool connect_result;
    QNetworkAccessManager *manager2 = new QNetworkAccessManager(this);
    connect_result = connect(manager2, SIGNAL(finished(QNetworkReply*)),
            this, SLOT(onMediaDownloaded(QNetworkReply*)));
    Q_ASSERT(connect_result);

    QNetworkReply* reply = manager2->get(QNetworkRequest(url));
// Here are the additional parameters
    reply->setProperty("mediaType", mediaType);
    reply->setProperty("messageID", messageID);
}
Run Code Online (Sandbox Code Playgroud)

而且有插槽

void myClass::onMediaDownloaded(QNetworkReply *reply)
 {
     int mediaType = reply->property("mediaType").toInt();
     int messageID = reply->property("messageID").toInt();
     switch (mediaType) {
         // Handle different media types
         .....
     }
 }
Run Code Online (Sandbox Code Playgroud)