Qt 之文件排序(避免出现1. txt 10.txt 11.txt 2.txt.20.txt....)
文章目录
- 场景及解决方案
- 排序规则
- QCollator类
场景及解决方案
项目中,经常用到一些对目录文件进行排序显示的需求,然后遇到一些有规则命名的文件时,经常会出现一些意想不到的排序结果,比如:
这时,我们就需要做一些改进工作了,其实就是对目录下的文件定制一个排序规则,
排序规则
代码如下:
QDir dir("./files");
if(!dir.exists())
{
qDebug() << “path not exist!”;
return 0;
}
dir.setFilter(QDir::Files | QDir::NoSymLinks);
QStringList files = dir.entryList(dir.filter() | QDir::NoDotAndDotDot);
QCollator collator;
collator.setNumericMode(true);
std::sort(files.begin(), files.end(),
[& collator](const QString & str1, const QString & str2)
{
return collator.compare(str1, str2) < 0;
});
for(const auto &v: files)
{
qDebug() << v;
}
结果:
QCollator类
QCollator使用QLocale和可选的排序策略进行初始化。它尝试用指定的值初始化collator。然后,可以使用collator以依赖于语言环境的方式对字符串进行比较和排序。
QCollator对象可以与基于模板的排序算法(如std::sort)一起使用,对qstring列表进行排序。
除了区域设置和排序策略外,还可以设置几个影响排序结果的可选标志。
//大小写
void setCaseSensitivity(Qt::CaseSensitivity sensitivity)
//标点符号
void setIgnorePunctuation(bool on)
//QLocale在其构造函数中使用语言/国家对进行初始化,并提供与QString中类似的数字到字符串和字符串到数字转换函数。
void setLocale(const QLocale &locale)
//当on设置为true时启用数字排序模式。
//这将允许对数字进行正确排序,例如,99之后进行100次排序。
//默认情况下,此模式处于关闭状态。
void setNumericMode(bool on)
//排序键
QCollatorSortKey sortKey(const QString &string) const
Qt 之文件排序(避免出现1. txt 10.txt 11.txt 2.txt.20.txt....)相关推荐
- 【转】Qt之文件操作 QFile
转载:http://blog.csdn.net/liuhongwei123888/article/details/6084761 今天学习QT的文件操作 1.QIODevice 直接继承自QObjec ...
- C++Qt开发——文件操作
简介 QT中的IO操作通过统一的接口简化了文件与外部设备的操作方式,QT中文件被当作一种特殊的外部设备,文件操作与外部设备操作相同.IO操作的本质是连续存储空间的数据读写. 1. IO设备的类型 顺序 ...
- 【解决方案】QT读写文件
下面的这些东西,在网上可能都会找到类似的文章,但是真正使用的时候,却没有办法打开对应的文件. 解决方案: 打开项目所在文件夹. 比如我这里的项目叫Test 可以看到前面两个有build-* 文件夹. ...
- opengl png图片 qt_Qt资源文件的格式,并用CMake添加Qt资源文件
目录 ......QRC文件的写法用CMake添加Qt资源文件添加QRC文件的函数步骤CPP中使用QRC文件使用QRC文件实例程序结果QRC文件CMakeLists.txt文件Dialog.h文件Di ...
- php对文件排序,php – 使用filemtime()和usort()对文件进行排序会产生随机结果
我正在使用usort()和filemtime()按修改日期对文件进行排序,但它会以错误的顺序随机返回文件.我想我错过了一些非常简单但我无法弄明白的东西. usort($user_files, func ...
- 《spark技术应用》课程期末考试大作业报告,使用eclipse完成求top值、文件排序、二次排序三个程序的个性化开发。
目录 一.选题的目的及要求... 4 二.设计思路... 4 三.主要内容及关键技术.. 5 四.制作步骤... 5 1.准备工作... 5 1.1在VMware中安装一台Ubuntu64位系 ...
- Qt QFile文件操作详解
Qt QFile文件操作详解 很多应用程序都需要具备操作文件的能力,包括对文件内容进行读/写.创建和删除文件等,甚至某些应用程序的诞生纯粹是为了操作文件,比如 WPS Office.PDFedit 等 ...
- python文件信息排序_python文件排序的方法总结
在python环境中提供两种排序方案:用库函数sorted()对字符串排序,它的对象是字符:用函数sort()对数字排序,它的对象是数字,如果读取文件的话,需要进行处理(把文件后缀名'屏蔽'). (1 ...
- 编写程序创建一个通讯录文件,在其中存入10位同学的姓名、年龄、电话号码,并在屏幕上输出第2、4、6、8、10位同学的信息
<程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p257 习题8 8.编写程序创建一个通讯录文件,在其中存入10位同学的姓名.年龄.电话号码,并在屏幕上 ...
最新文章
- 必读:ICLR 2020 的50篇推荐阅读论文
- 大专生如何报考MBA
- 最新maven插件的安装
- SD-WAN开源优势是什么?
- [SDOI2011] 计算器
- 实现CA证书创建及客户端申请证书
- C++ boost 正则表达式用法
- 【div+css】两个div,如何让内层的div在外层div中水平垂直居中
- Matlab编程基础
- 相机与镜头的基本概念
- android浏览器测试,Android多款手机浏览器页面加载测试横评
- sftp服务器下载文件至本地电脑
- git撤销commit
- AIOT-物模型(产品模型、数据模板)
- Android Jetpack之DataBinding+ViewModel+LiveData+Room
- 英雄联盟怎么解除小窗口_英雄联盟:老玩家都不知道的小技巧,一定要注意这些细节|英雄联盟|召唤师|防御塔|新英雄|亚索...
- 找回生命本源的力量,走上生命觉醒的旅程
- 技术的发展与互联网的发展
- Python GUI编程之视频解析软件制作
- 小写数字与大写数字转换
热门文章
- 2021年高考湛江成绩查询,湛江学子注意!今日起可查询,2021年1月学考成绩公布...
- 小白学算法——借用leetcode(其实就是刷题记录....——1
- FCC Part 25.203 卫星地球站站址和频率的选择—申请材料(1)
- VUE === vuex是什么?怎么使用?哪种功能场景使用它?
- 什么蓝牙耳机续航强?续航好的蓝牙耳机推荐
- .mvn目录mvnw和mvnw.cmd文件说明
- tidytext | 耳目一新的R-style文本分析库
- WebAssembly 能取代 Kubernetes 成为下一代云计算王者吗?
- Android 倒影
- 荣耀8官方ROM降级(升级)教程--使用Firmware Finder7.9捐赠版来完成(适用于其它华为手机)