2013-05-10 113 views
0

我用QNetworkAccessManager處理髮送一個HTTP請求:Qt的:QNetworkAccessManager不發送請求

void f() 
{  
    QNetworkRequest request(QUrl(address));  
    QNetworkAccessManager mng; 
    mng.get(request); 
    //QEventLoop().exec(); 
    } 
void main() 
{ 
    ... 
    f(); 
    ... 
} 

如果無線QEventLoop()EXEC();該應用將不發送請求。但是如果用行QEventLoop()。exec(),它會的。我不明白爲什麼?
可以清除我嗎?
非常感謝您! (P/S:我已經看到了這個鏈接:Sending an HTTP request using QNetworkAccessManager

回答

0
void f()  
{   
    static QNetworkRequest request(QUrl(address));   
    static QNetworkAccessManager mng; 
    mng.get(request); 
} 
void main() 
{ 
    ... 
    f(); 
    ... 
} 

我想這是因爲QNetworkAccessManager是異步的,需要時間來發送請求。但是,當超出範圍時,需要url,query,...被銷燬。 - >我們需要的範圍時QNetworkAccessManager做派請求(使用QEventLoop()EXEC();)或讓需要,網址,查詢,...是持久的(靜態聲明它)。