c++ - When to delete QNetworkAccessManager pointer? -
This is my code but I am confused that where should I delete My fear is this: I think the cause of this situation can be the accident. Since you create a new m_networkManager ?
onRequestCompleted () slot but the problem is that my program The call getData function is often.
onRequestCompleted () before the slot has been removed, my program call getData () again. onRequestCompleted () is removed for the first getData () call. getData () was called the second time. Zero MyApp :: getData () {QNetworkRequest request; Request.setUrl (QUrl ("http://www.domain.foo")); M_networkManager = New QNetworkAccessManager (this); // Instant Variable Connect (m_networkManager, Signal (Finish (QN NetworkCare *)), This Slot (On-Vinium (QN NetworkCar * *)); M_networkManager- & gt; Received (request); } Zero MyApp :: onRequestCompleted (QNetworkReply * Answer) {QByteArray Data = Answer-> readAll (); reply-> deleteLater (); // m_networkManager-> deleteLater (); } QNetworkAccessManager example every time As the MyApp :: getData () is called , you have to manage the removal of the correct one in the QNetworkAccessManager and not because of that slot call. My suggestion is the following:
zero MyApp :: getData () {[..] // will not be removed in square member slot QNetworkAccessManager * Network Manager = New QNetworkAccessManager (this); Connect (m_networkManager, Signal (Finished (QN NetworkCarP *)), This Slot (HonorConstructed Compliant (QN NetworkCar * *)); [..]} Zero MyApp :: onRequestCompleted (QNetworkReply * Answer) {QByteArray Data = Answer-> readAll (); reply-> deleteLater (); // Delete the object whose signal triggers this slot QObject * Network Manager = Sender (); networkManager- & gt; deleteLater (); }
Comments
Post a Comment