Qt文件名排序

在利用QDir::entryList获取文件夹中文件列表时,文件的排序可能会不适合我们的要求,比如文件夹中有

file_1.text
file_2.text
file_3.text
...
file_21.text
file_22.text
file_23.text

获取到的排序却是这样的排序

file_1.text
file_10.text
file_11.text
...
file_2.text
file_20.text
file_21.text

此时我们可以尝试以下方法

    //QStringList fileList = imgDir.entryList(filters, QDir::Files | QDir::NoDot, QDir::Type);

    QStringList fileList = imgDir.entryList(filters, QDir::Files | QDir::NoDot);

    QCollator collator;
    collator.setNumericMode(true);

    std::sort(fileList.begin(), fileList.end(),
                  [& collator](const QString & str1, const QString & str2)
    {
          return collator.compare(str1, str2) < 0;
    }
    );

参考资料:https://www.it1352.com/1820403.html

你可能感兴趣的:(Qt相关)