1.FolderListModel介绍
FolderListModel提供了对本地文件系统中文件夹内容的访问信息,并将文件列表暴露给视图和其他数据组件。
笔者使用的版本是import Qt.labs.folderlistmodel 2.14
它的常用属性有:
- caseSensitive : bool,区分大小写,默认为true
- count : int,统计当前文件夹中与筛选条件匹配的文件项数,同时,当我们新增或者减少一个文件时,该count也会自动刷新
- folder : url,保存model当前提供的文件夹的URL。
- nameFilters : list<string>,文件名筛选器,用来筛选文件夹内容的后缀格式.比如:nameFilters: [ "*.png", "*.jpg" ]
- parentFolder : url,返回当前文件夹父级的URL
- rootFolder : url,设置此属性时,给定文件夹将被视为文件系统中的根,因此您只能遍历其中的子文件夹。
- showDirs : bool,默认为true,如果设置为false,那么model里就不会有文件夹目录
- showDirsFirst : bool,默认为false.为true时,则model中的目录始终优先排列在最前面,然后才是文件
- showDotAndDotDot : bool,如果为true,则“.”和“..”的目录将包括在模型中;默认为false。
- showFiles : bool,默认为true,如果设置为false,那么model里就不会有文件
- showHidden : bool,默认为false,如果为true,则将隐藏文件和隐藏目录也包括在model中
- showOnlyReadable : bool,默认为false,如果为true,则仅显示可读文件和目录
- sortCaseSensitive : bool,默认为true,进行排序大小写,此属性在Qt 5.12中引入。
- sortField : enumeration,排序方式,取值有以下:
- Unsorted - no sorting is applied.不进行排序
- Name - sort by filename,按文件名排序
- Time - sort by time modified,按修改时间排序
- Size - sort by file size,按文件大小排序
- Type - sort by file type (extension),按文件类型排序
- sortReversed : bool,排序反转,默认为false.不反转
- status : enumeration ,model状态(文件夹读取状态),取值有以下:
- FolderListModel.Null - 尚未开始
- FolderListModel.Ready - 文件夹已加载
- FolderListModel.Loading - 当前正在加载文件夹
Methods:
- var get(index, string property) : 获取第index项的文件夹或者文件的property属性.property取值有以下几种:
- fileName : 文件名
- filePath : 文件路径
- fileURL (since Qt 5.2)
- fileBaseName : 文件基本名称
- fileSuffix : 文件后缀
- fileSize : 文件大小
- fileModified : 文件已修改
- fileAccessed : 文件已访问
- fileIsDir : 文件是否是目录
- int indexOf(file) : 获取file路径在model中所在的索引号,如果未找到,则返回-1
- bool isFolder(index) : 判断是否是文件夹
在使用FolderListModel时,它会提供一个fileName只读属性给视图使用.
示例如下所示(统计图片文件):
Column { Repeater { model: FolderListModel { id: folderModel showDirs: false nameFilters: ["*.png", "*.jpg", "*.gif"] folder: "file:///D:/icon/" onCountChanged: { console.log(count) } } Text { text: folderModel.folder + fileName } } }
效果如下所示: