downloadProgress不是从QNetworkReply发出的

时间:2009-07-28 19:27:16

标签: qt qt4 qtnetwork

我正在尝试使用QNetworkAccessManager构建一个在Qt中下载二进制文件的模块。我使用文档中详述的相同方法(见下文),但是当我收到readyRead信号时,downloadProgress永远不会到达。

所有事情都发生在同一个线程上(项目很大,所以我无法将其全部粘贴)。

有什么想法吗?

QNetworkRequest request;
request.setUrl("http://XXX.s3.amazonaws.com/XXX.exe");
request.setRawHeader("User-Agent", "MyOwnBrowser 1.0");

QNetworkAccessManager * m_manager = new QNetworkAccessManager( this );
m_reply = m_manager->get(request);
m_reply->setParent(this);

connect(m_reply, SIGNAL(readyRead()), this, SLOT(slotReadyRead()));
connect(m_reply, SIGNAL(downloadProgress(qint64 bytesReceived, qint64 bytesTotal)),
this, SLOT(replyDownloadProgress(qint64 bytesReceived, qint64 bytesTotal)));

2 个答案:

答案 0 :(得分:2)

好的,发现它 哇这简单的错误。

答案是句法:

connect(m_reply, SIGNAL(downloadProgress(qint64 bytesReceived, qint64 bytesTotal)),
        this, SLOT(replyDownloadProgress(qint64 bytesReceived, qint64 bytesTotal))); 

是错误

它应该是:

connect(m_reply, SIGNAL(downloadProgress(qint64 , qint64 )),
        this, SLOT(replyDownloadProgress(qint64 , qint64 )); 

一旦我改变它,我得到了信号。

QT不检查其预处理器中的语法错误(自我注意)

答案 1 :(得分:1)

我已修补我的Qt使用qFatal()而不是qWarning(),因此应用程序断言而不是打印错误消息(在与发布版本Qt链接时无法看到)。 YMMV。