在控制台应用中使用信号和插槽?

时间:2013-10-31 06:32:25

标签: c++ qt console-application signals-slots

在我的项目中,我需要从服务器下载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;

我收到以下错误:

'connect'函数不带四个参数。

如何修改信号和插槽以在我的控制台应用程序中工作?

1 个答案:

答案 0 :(得分:3)

我的猜测是你的代码在建立信号/插槽连接方面是正确的,但编译器似乎因为connect()函数名称而混淆,无法正确解析:是QObject::connect()至少需要4个参数,或者它是另一个具有相同名称但具有不同签名的函数。我建议尝试明确告诉编译器使用哪个函数,即:

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