2010-02-09 122 views
0

我有一個簡單的類網絡有:信號沒有得到發射

private: 
    QNetworkAccessManager *httpclient; 

我在構造函數創建一個對象,並連接信號和槽:

httpclient = new QNetworkAccessManager(this); 
connect(httpclient, SIGNAL(finished(QNetworkReply*)), this, SLOT(httpRequestFinished(QNetworkReply*))); 

現在我打算通過公共方法調用QNetworkAccessManager的get方法getPage:

void Networking::getPage(const QString &uri) 
{ 
    QNetworkRequest request; 
    request.setUrl(uri); 
    httpclient->get(request); 
} 

我預計httpRequestFinished被調用,但事實並非如此。 我也試了一下這個測試目的:

void Networking::getPage(const QString &uri) 
{ 
    QNetworkRequest request; 
    request.setUrl(uri); 
    reply = httpclient->get(request); 
    connect(reply, SIGNAL(finished()), this, SLOT(httpReplyFinished())); 
} 

其中回覆正確的文件networking.h定義:

private: 
QNetworkAccessManager *httpclient; 
QNetworkReply *reply; 

一切都沒變!但是,如果我訪問reply-> bytesAvailable()之後get-Request所有信號同時發出!我現在正在尋找幾個小時,但不知道我做錯了什麼。

回答

1

所以......我發現了爲什麼 - 但不完全是:這是內存管理。 我不得不定義我的對象指針在我的主窗口類

Networking *nw; 

現在我可以用它 - 我的按鈕動作,例如:

nw = new Networking(); 
nw->getPage("my url here"); 

一切按預期! Ufff ..很多東西