2013-10-31 80 views
-2

在我的項目中,我需要從服務器下載一個1.5MB的文件。我能在我的GUI應用程序來實現這一目標是這樣的:在控制檯應用程序中使用信號和插槽?

QNetworkAccessManager* m_NetworkMngr = new QNetworkAccessManager(this); 
    QNetworkReply *reply = m_NetworkMngr->get(QNetworkRequest(QUrl("someurl.com"))); 
    QEventLoop loop; 
    connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); 
    loop.exec(); 
    QUrl aUrl("someurl.com"); 
    QFileInfo fileInfo=aUrl.path(); 

    QFile file(aPathInClient+"\\"+fileInfo.fileName());//aPathInClient is predefined 
    file.open(QIODevice::WriteOnly); 
    file.write(reply->readAll()); 
    delete reply; 

我收到以下錯誤:

「連接」功能並不需要四個參數。

如何修改信號和插槽以在我的控制檯應用程序中工作?

+1

你知道你也可以在非GUI(即控制檯)應用程序中使用Qt嗎?完成信號和插槽和一切。 –

+0

-_- o真的嗎?哇,我不覺得愚蠢。那麼你知道我爲什麼得到一個錯誤,說太多的論據嗎?這是參考「連接」 – mrg95

+0

@ mc360pro因爲你發送太多參數到「連接」?無論如何,Joachim是對的,你可以在控制檯應用程序中使用Qt,我已經完成了它,並且它可以工作。 – sashoalm

回答

3

我的猜測是你的代碼在建立信號/插槽連接方面是正確的,但編譯器似乎因爲connect()函數名稱而無法正確解決:是否爲QObject::connect()需要至少4個參數,或者它是具有相同名稱的另一個功能,但簽名不同。我建議嘗試明確地告訴編譯器使用哪個函數,即:

QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));