1.内存,时间格式,传输速度的标准格式输出
我们经常会遇到byte内存转为KB,MB,GB;还有秒数转为时分秒这种格式;今天就来学习和记录一下:
头文件
transition.h
QString transitonMem(long long byte);
QString transitionSpeed(long long byte);
QString transitionTime(int t);
源文件
transiton.cpp
QString Transition::transitionMem(long long byte)
{
if(byte < (1 << 10))
{
return QString::number(byte) + "KB";
}
else if(byte < (1 << 20))
{
double kb = byte *1.0 / (1 << 10);
return QString::number(kb, 'f', 2) + "MB";
}
else if(byte < (1 << 30))
{
doublie mb = byte *1.0 / (1 << 20);
return QString::number(mb, 'f', 2 ) + "GB";
}
else
{
double gb = byte *1.0 / (1 << 30);
return QString::number(gb, 'f', 2) + "TB";
}
}
QString Transition::transitionSpeed(long long byte)
{
if(byte < (1 << 10))
{
return QString::number(byte) + "B/s";
}
else if(byte < (1 << 20))
{
double kb = byte *1.0 / (1 << 10);
return QString::number(kb, 'f', 2) + "KB/s";
}
else if(byte < (1 << 30))
{
doublie mb = byte *1.0 / (1 << 20);
return QString::number(mb, 'f', 2 ) + "MB/s";
else
{
double gb = byte *1.0 / (1 << 30);
return QString::number(gb, 'f', 2) + "GB/s";
}
}
QString Transiton::transitionTime(int t)
{
int h = t /60 / 60;
int m = t / 60 % 60;
int s = t % 60 % 60;
return QString("%1:%2:%3").arg(QString::number(h), 2, '0').arg(QString::number(m), 2, '0').arg(QString::number(s), 2, '0');
}
main函数中调用
main.cpp
ui->label_01->setText(transitionMem(query.value(0).toFloat()));
ui->label_02->setText(transitionSpeed(query.value(1).toFloat()));
ui->label_03->setText(transitionTime(query.value(2).toFloat()));
2.float与QString相互转换
x与y其中的一个必须为float或者double,否者算出来的z可能为0,自动四舍五入
float z = x / y;
QString str = QString::number(z, 'f', 2) + "%";
float f = QString(“3.1415926”).toFloat();