美文网首页
QFile entryList自然排序问题

QFile entryList自然排序问题

作者: 田陌允 | 来源:发表于2019-05-10 13:33 被阅读0次

问题:

现有slide1~slide32共32个jpg文件

entryList默认获取到的列表排序为:

slide1,slide10,slide11,slide12......

slide2,slide21,slide22,slide23.....

...

...

解决思路:

1.循环遍历QFile::entryList获取到的文件列表

2.截取文件名字符串中的数字字段以int返回

3.利用qSort(...)函数进行排序

C++代码:


inline int findNumberPart(const QString& sIn)

{

  QString s = "";

  int i = 0;

  bool isNum = false;

  while (i < sIn.length())

  {

    if (isNum)

    {

      if (!sIn[i].isNumber())

        break;

      s += sIn[i];

    }

    else

    {

      if (sIn[i].isNumber())

        s += sIn[i];

    }

    ++i;

  }

  if (s == "")

    return 0;

  return s.toInt();

}

bool naturalSortCallback(const QString& s1, const QString& s2)

{

  int idx1 = findNumberPart(s1);

  int idx2 = findNumberPart(s2);

  return (idx1 < idx2);

}

使用示例demo:


QString fileList = myFolder.entryList(QStringList() << "*.JPG");

qSort(fileList.begin(), fileList.end(), naturalSortCallback);

image

相关文章

  • QFile entryList自然排序问题

    问题: 现有slide1~slide32共32个jpg文件 entryList默认获取到的列表排序为: slide...

  • Qt 问题处理

    1、通过QFile输出到文件中存在中文乱码问题。解决方法:在pro文件中添加

  • PyQt5的文件系统

    Class: QIODevice, QFileDevice, QFile, QTemporaryFile,…… Q...

  • QT文件读写方法

    QT中存在它为自身设计的文件类QFile,我们可以使用QFile来创立一个文件对象,并使用QTextStream与...

  • java_TreeSet_自定义排序与练习题

    TreeSet支持两种排序方法:自然排序和定制排序。TreeSet默认采用自然排序。 自然排序 TreeSet会调...

  • qt 常用类

    QString和QJsonObject互转 QString 和char *转char[] QFile使用

  • 09.排序:快排和归并排序

    1.归并排序 大体思路 归并排序核心思想:分治思想(大问题化分为小问题去解决,小的问题解决了,大问题自然也能解决掉...

  • Qt QFile的使用

    Qt QFile的使用 1. 注意点 使用如下代码来进行操作时: 如果mode含有QIODevice::Text,...

  • Java比较器(对象排序)

    Java实现排序的方式 自然排序:java.lang.Comparable 定制排序:java.lang.Comp...

  • TreeMap用法总结

    TreeMap用法总结 TreeMap中的元素默认按照keys的自然排序排列。 (对Integer来说,其自然排序...

网友评论

      本文标题:QFile entryList自然排序问题

      本文链接:https://www.haomeiwen.com/subject/zwnooqtx.html