Qt - 将int转换为文件大小格式(KB,MB或GB)的最简单方法?

Mas*_*gol 7 qt

int文件大小转换为文件大小格式的字符串的最简单方法是:

2048 to 2 KB
4086 KB to 4 MB
Run Code Online (Sandbox Code Playgroud)

而不是在Qt5中手动计算?

Mar*_*k R 18

Qt 5.10引入了现成的解决方案:

QLocale locale = this->locale();
QString valueText = locale.formattedDataSize(sizeValue);
Run Code Online (Sandbox Code Playgroud)


dan*_*nca 16

QFileInfo没有特定于此的方法,但是在这里你可以找到一个简单的实现子类化QFileInfo并实现这个新方法

QString QFileInfoHumanSize::size_human()
{
    float num = this->size();
    QStringList list;
    list << "KB" << "MB" << "GB" << "TB";

    QStringListIterator i(list);
    QString unit("bytes");

    while(num >= 1024.0 && i.hasNext())
     {
        unit = i.next();
        num /= 1024.0;
    }
    return QString().setNum(num,'f',2)+" "+unit;
}
Run Code Online (Sandbox Code Playgroud)

  • 将`list`作为常量类成员会更好.每次要使用它时都没有理由继续创建列表,因为列表总是相同的. (8认同)