排序问题描述:
在某一个文件夹下有很多相似的(SDxx.bin)文件 用Qt将这些文件全部扫描出来 用QTableWidget显示出来
这些都很简单 ^__^心虚
但是问题了 我扫描出来的文件需要排序 如果用它提供的Qt排序规则的话会出现问题
例如:我现在有20个文件
SD1.bin ~SD20.bin 默认排序的结果会是这样的 SD1.bin SD10.bin SD11.bin . . . SD2.bin SD20.bin SD3.bin ......
SD9.bin 但是这明显我不是我们想要的结果
所以自己需要排序读出来的内容
最开始我使用的是快速排序
在MainWindow的头文件中申明
static void AsscendingOrder(const QFileInfo &list1,const QFileInfo &list2);
排序
qSort(list.begin(),list.end(),&MainWindow::AscendingOrder);
int MainWindow::AscendingOrder(const QFileInfo &list1,const QFileInfo &list2)
{
// 如果两个字符串的长度不相等那么就把少的放前面
if(list1.fileName().length() < list2.fileName().length())
{
return 1;

本文介绍了在Qt环境下,如何处理QFileInfoList的自然排序问题。当默认排序导致SD数字序列错误排序时,作者通过自定义排序函数(如快速排序和选择排序)来解决这一问题,确保SD1到SD20等文件按数字顺序排列。
最低0.47元/天 解锁文章
5063

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



