以服务器端tcpServer为例
先在tcpServer.h头文件中加入#include <QTime>
然后在其私有成员中加入 QTime time;
切到tcpServer.cpp中,在服务器链接或准备发送的函数中加入
计时开始的函数time.start();
然后在你更新进度条的函数后加入下列语句,也可加在服务器建立链接的函数中
float useTime = time.elapsed();
double speed = bytesReceived / useTime;
ui->tcpClientStatusLabel->setText(tr("已接收 %1MB (%2MB/s) \n共%3MB 已用时:%4秒\n估计剩余时间:%5秒")
.arg(bytesReceived / (1024*1024))//已接收
.arg(speed*1000/(1024*1024),0,'f',2)//速度
.arg(totalBytes / (1024 * 1024))//总大小
.arg(useTime/1000,0,'f',0)//用时
.arg(totalBytes/speed/1000 - useTime/1000,0,'f',0));//剩余时间
其中的time.elapsed()函数返回该自上次start()或restart()被调用经过的毫秒数。
先在tcpServer.h头文件中加入#include <QTime>
然后在其私有成员中加入 QTime time;
切到tcpServer.cpp中,在服务器链接或准备发送的函数中加入
计时开始的函数time.start();
然后在你更新进度条的函数后加入下列语句,也可加在服务器建立链接的函数中
float useTime = time.elapsed();
double speed = bytesReceived / useTime;
ui->tcpClientStatusLabel->setText(tr("已接收 %1MB (%2MB/s) \n共%3MB 已用时:%4秒\n估计剩余时间:%5秒")
.arg(bytesReceived / (1024*1024))//已接收
.arg(speed*1000/(1024*1024),0,'f',2)//速度
.arg(totalBytes / (1024 * 1024))//总大小
.arg(useTime/1000,0,'f',0)//用时
.arg(totalBytes/speed/1000 - useTime/1000,0,'f',0));//剩余时间
其中的time.elapsed()函数返回该自上次start()或restart()被调用经过的毫秒数。
本文介绍如何在TCP服务器中利用QTime计时器优化客户端的进度显示,包括如何启动计时器、计算并展示接收数据的速度、已接收的数据量、总数据量以及用时和剩余时间。
57

被折叠的 条评论
为什么被折叠?



