FolderListModel QML 类型

FolderListModel 提供了对文件系统文件夹内容的模型的访问,提供了文件列表供视图和其他数据组件使用。更多...

导入声明import Qt.labs.folderlistmodel 2.7

属性

方法

详细描述

FolderListModel 提供了对本地文件系统中文件夹内容的访问信息,向视图和其他数据组件暴露文件列表。

注意:该类型通过导入 Qt.labs.folderlistmodel 模块获得。在 Qt.labs 模块中的元素未来版本中可能不保证兼容性。

注意:FolderListModel 的一些特性依赖于 QFileSystemWatcher。如果禁用 QFileSystemWatcher,使用 setFolder 设置的文件夹将不会被监视变化,导致通常在目录变化(如目录更新或目录更改)时发出的信号(如 directoryUpdated 或 directoryChanged)在没有手动再次调用 setFolder 的情况下不被发出。有关更多信息,请参阅 Qt 配置选项

import Qt.labs.folderlistmodel

文件夹属性指定要访问的文件夹。通过模型的接口提供该文件夹中文件和目录的信息。组件通过以下角色访问名称和路径:

  • fileName (字符串)
  • filePath (字符串)
  • fileURL (url)(自 Qt 5.2;自 Qt 5.15 已弃用)
  • fileUrl (url)(自 Qt 5.15)
  • fileBaseName (字符串)
  • fileSuffix (字符串)
  • fileSize (qlonglong)
  • fileModified (日期)
  • fileAccessed (日期)
  • fileIsDir (bool)

此外,可以通过isFolder() 方法区分文件项和文件夹项。

过滤

可以设置各种属性以过滤模型公开的文件和目录数量。

可以设置nameFilters属性,以包含应用于文件和目录名称的通配符过滤器列表,导致仅公开匹配过滤器的内容。

可以使用showDirs属性包含或排除目录,通过将showDotAndDotDot属性设置为false,可以排除导航目录,使用showHidden属性可以包含或排除隐藏文件。

有时限制公开的文件和目录以仅限于用户可以访问的内容很有用。可以将showOnlyReadable属性设置为启用此功能。

示例用法

以下示例显示了一个用于通过ListView提供 QML 文件列表的 FolderListModel。

import QtQuick
import Qt.labs.folderlistmodel

ListView {
    width: 200; height: 400

    FolderListModel {
        id: folderModel
        nameFilters: ["*.qml"]
    }

    Component {
        id: fileDelegate
        required property string fileName
        Text { text: fileName }
    }

    model: folderModel
    delegate: fileDelegate
}

路径分隔符

Qt 使用 "/" 作为通用目录分隔符,就像在 URL 中使用 "/" 作为路径分隔符一样。如果您始终使用 "/" 作为目录分隔符,Qt 将将您的路径转换为符合底层操作系统的格式。

参见QML 数据模型

属性文档

caseSensitive : bool

使用大小写敏感的图案匹配。

默认情况下,此属性为 true。


count : int [只读]

返回当前文件夹中符合过滤条件的项目数量。


folder : url

folder属性包含模型当前提供的文件夹的URL。

值必须是file:或qrc: URL,或相对URL。

默认值是在初始化FolderListModel时应用程序的工作目录。


nameFilters : list<string>

nameFilters属性包含文件名过滤器列表。过滤器可能包括?和*通配符。

以下示例过滤 PNG 和 JPEG 文件

FolderListModel {
    nameFilters: [ "*.png", "*.jpg" ]
}

注意:过滤器不会排除目录。


parentFolder : url [只读]

返回当前文件夹的父级URL。


rootFolder : url

当设置此属性后,指定的文件夹将被视为文件系统中的根目录,因此您只能遍历其内部子文件夹。


showDirs : bool

如果为true,则目录将被包含在模型中;否则,只包含文件。

默认情况下,此属性为 true。

注意,nameFilters不会应用于目录。

另请参阅 showDotAndDotDot


showDirsFirst : bool

如果为true,则在模型中包括目录时,它们总是首先显示,然后是文件。

默认情况下,此属性为false。


showDotAndDotDot : bool

如果为true,则点"."和".."目录将被包含在模型中;否则,它们被排除。

默认情况下,此属性为false。

另请参阅 showDirs


showFiles : bool

如果为true,则文件将被包含在模型中;否则,只包含目录。

默认情况下,此属性为 true。

另请参阅 showDirs


showHidden : bool

如果为true,则隐藏的文件和目录将被包含在模型中;否则,它们被排除。

默认情况下,此属性为false。


showOnlyReadable : bool

如果为true,则仅显示可读的文件和目录;否则,显示所有文件和目录。

默认情况下,此属性为false。

另请参阅 showDirs


sortCaseSensitive : bool

如果设置为true,则排序区分大小写。默认情况下此属性为true


sortField : enumeration

sortField 属性包含用于排序的字段。 sortField可以是以下值之一

常数描述
FolderListModel.Unsorted不应用排序
FolderListModel.Name按文件名排序(默认)
FolderListModel.Time按修改时间排序
FolderListModel.Size按文件大小排序
FolderListModel.Type按文件类型/扩展名排序

另请参阅 sortReversed


sortReversed : bool

如果设置为true,则反转排序顺序。默认为false。

另请参阅 sortField


status : enumeration [只读]

此属性包含文件夹读取的状态。它可以有以下之一

常数描述
FolderListModel.Null没有设置任何文件夹
FolderListModel.Ready文件夹已加载
FolderListModel.Loading文件夹目前正在加载

使用此状态以提供更新或以某种方式响应状态更改。例如,您可以

  • 触发状态更改
    State { name: 'loaded'; when: folderModel.status == FolderListModel.Ready }
  • 实现一个onStatusChanged信号处理程序
    FolderListModel {
        id: folderModel
        onStatusChanged: if (folderModel.status == FolderListModel.Ready) console.log('Loaded')
    }
  • 绑定到状态值
    Text { text: folderModel.status == FolderListModel.Ready ? 'Loaded' : 'Not loaded' }

方法说明

var get(int index, string property)

返回给定index的文件夹属性。以下属性是可用的

  • fileName (字符串)
  • filePath (字符串)
  • fileURL (url)(自 Qt 5.2;自 Qt 5.15 已弃用)
  • fileUrl (url)(自 Qt 5.15)
  • fileBaseName (字符串)
  • fileSuffix (字符串)
  • fileSize (qlonglong)
  • fileModified (日期)
  • fileAccessed (日期)
  • fileIsDir (bool)

int indexOf(url file)

获取给定文件URL的索引,如果模型包含该文件,则返回其索引;否则返回-1。


bool isFolder(int index)

如果条目索引是文件夹则返回true;否则返回false。


© 2024 Qt公司有限公司。本说明文档中的文档贡献是各自所有者的版权。本提供的文档是根据自由软件基金会发布的GNU自由文档许可版1.3的条款授权的。Qt及其相关标志是芬兰及/或全球其他国家的Qt公司商标。所有其他商标均为各自所有者的财产。