2013-10-31 51 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()));