QNetworkReply
(1)
SIGNAL(finished()),当回复完成处理时,将发出此信号。发出此信号后,回复的数据或元数据将不再更新。除非调用了 close() 或 abort(),否则回复仍将打开以供读取,因此可以通过调用 read() 或 readAll() 来检索数据。特别是,如果由于 readyRead() 而没有调用 read(),则对 readAll() 的调用将检索 QByteArray 中的完整内容。此信号与 QNetworkAccessManager::done() 一起发出,其中该信号的回复参数是此对象。注意:请勿删除连接到此信号的插槽中的对象。使用 deleteLater()。
你也可以使用 isDone() 来检查 QNetworkReply 是否在收到 finish() 信号之前就已经完成。
另请参阅 setDone()、QNetworkAccessManager::done() 和 isDone()。
(2)
readyRead()
每次有新数据可用于从设备的当前读取通道读取时,都会发出一次此信号。只有在新数据可用时,例如当新的网络数据有效负载到达网络套接字时,或者当新数据块附加到设备时,它才会再次发出。readyRead() 不是递归发出的;如果您重新进入事件循环或在连接到 readyRead() 信号的插槽内调用 waitForReadyRead(),则信号将不会重新发出(尽管 waitForReadyRead() 仍可能返回 true)。对于实现从 QIODevice 派生的类的开发人员请注意:当新数据到达时,您应该始终发出 readyRead()(不要仅仅因为缓冲区中仍有数据需要读取而发出它)。不要在其他条件下发出 readyRead()。
(3)downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
发出此信号以指示此网络请求的下载部分的进度(如果有)。如果没有与此请求关联的下载,则此信号将发出一次,0 作为 bytesReceived 和 bytesTotal 的值。
bytesReceived 参数指示接收的字节数,而 bytesTotal 表示预期下载的总字节数。如果不知道要下载的字节数,则总字节数将为 -1。
当 bytesReceived 等于 bytesTotal) 时,下载完成。此时,字节总数将不是 -1。
请注意,bytesReceived 和 bytesTotal 的值可能与 size()、通过 read() 或 readAll() 获得的总字节数或标头的值(ContentLengthHeader)不同。原因是可能存在协议开销,或者在下载过程中可能会压缩数据。
(4)error(QNetworkReply::NetworkError code)
当回复检测到处理错误时,将发出此信号。done() 信号可能会随之而来,表明连接结束。
代码参数包含检测到的错误的代码。调用 errorString() 以获取错误条件的文本表示形式。
注意:请勿删除连接到此信号的插槽中的对象。使用 deleteLater()。