QT实现对文件名进行排序
QStringList QDir::entryList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
,该成员函数实现根据路径获取该文件夹下文件,其中QDir::SortFlags
是一个枚举类型,各个常量参照QT的官方文档:
QDir filedir(dir_path);
QStringList filenames = filedir.entryList(QDir::Files, QDir::Name); //按照QT所给的排序方式按名称排序
得到的排序结果:
demo1.jpg
demo10.jpg
demo11.jpg
...
demo2.jpg
demo3.jpg
这不是所需要的结果,需要demo1.jpg、demo2.jpg ... demo10.jpg、demo11.jpg这样的结果
解决方案使用std::sort()#
函数原型template <class RandomAccessIterator, class Compare> void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
其中first、last是两个迭代器,comp是比较器,作为排序依据
QDir filedir(dir_path);
QStringList filenames = filedir.entryList(QDir::Files, QDir::NoSort); //获取dir目录下的所有文件名
QCollator collator; //The QCollator class compares strings
//according to a localized collation algorithm.
collator.setNumericMode(true); //启用数字模式方式排序
std::sort(filenames.begin(), filenames.end(), collator); //第三个参数作为排序依据
参考资料:https://stackoverflow.com/questions/11933883/sort-filenames-naturally-with-qt
作者:qianxiaohan
出处:https://www.cnblogs.com/qianxiaohan/p/18224499
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具