1.连接socket的byteswritten信号和自己的处理函数,我们是根据字节数来对progressbar进行设置的。
connect(&tcpClient, SIGNAL(bytesWritten(qint64)),
this, SLOT(updateClientProgress(qint64)));
2.接着我们设置好自己界面上的进度条某bar,然后就是关键的,先设置进度条的最大值,也就是我们的socket需要读写的总字节数,然后就可以设置当前值,也就是当前已经读写的字节数了,由上面的socket信号发出来的数值。
void Dialog::updateClientProgress(qint64 numBytes)
{
// callen when the TCP client has written some bytes
bytesWritten += (int)numBytes;
// only write more if not finished and when the Qt write buffer is below a certain size.
if (bytesToWrite > 0 && tcpClient.bytesToWrite() <= 4*PayloadSize)
bytesToWrite -= (int)tcpClient.write(QByteArray(qMin(bytesToWrite, Pa