我想用QNetWorkAccessManager
完成HTTP-GET
,並嘗試將值傳遞給reply_finished
插槽,那麼我希望得到插槽反饋到它的通話功能(例如MainWindow
)。我使用https://stackoverflow.com/a/21362640/7519936 並將一個值作爲值傳遞給reply_finished
插槽,但是我的應用程序崩潰了。通價值插槽和得到反饋到它的通話功能與QNetWorkAccessManager
這裏是我的MainWindow
代碼:
QHash<QNetworkReply*, QString*> data_storage;
QString data="";
manager = new QNetworkAccessManager(this);
QNetworkReply* reply =manager->get(QNetworkRequest(QUrl("http://example.com")));
data_storage[reply] = &data;
connect(manager, SIGNAL(finished(QNetworkReply*)),this,SLOT(reply_Finished(QNetworkReply*)));
的reply_finshed
段代碼:
void MainWindow::reply_Finished(QNetworkReply *reply)
{
data_storage.value(reply)->append("test");
data_storage.remove(reply);
//other
}
請不要介意我的英語水平。 請幫助我,謝謝!
什麼'data_storage.remove(回覆)'做 - 它'delete'的回答嗎?你的調試器說調用堆棧在崩潰的時候是什麼? –
@ G.M。我在stackoverflow上發現了一個相同的問題,我用它的方式與我的計劃,但我的應用程序崩潰。 – xiazhanjian
你在哪裏閱讀'reply'的'response'?你正在試圖將'local'變量('''')的引用存儲到'QHash'中,該''QHash''在調用'reply_finished'時將''從hash中移除。我不確定你是否首先想要的。你應該閱讀已完成的信號,然後使用它。 – Azeem