PagingModel QML类型
PagingModel是一个通用的-model,使用“分页”(Paging)方法来加载数据。 更多...
导入语句 | import QtInterfaceFramework |
实例化 | QIfPagingModel |
继承 | |
继承自 |
属性
- capabilities : 枚举
- chunkSize : int
- count : int
- fetchMoreThreshold : int
- loadingType : 枚举
信号
方法
详细描述
应该直接使用PagingModel或作为基类,当需要在大型的ListView中呈现大量数据时。
该模型只 fetches它实际需要的 regex,并且可以通过loadingType属性来配置如何进行。
模型中的所有行都需要从StandardItem派生。
该模型中以下功能可用
角色名称 | 类型 | 描述 |
---|---|---|
名称 | 字符串 | 条目名称。例如,地址簿中联系人的姓名,或艺术家列表中的艺术家姓名。 |
类型 | 字符串 | 条目的类型。例如,“artist”,“track”,“contact”。 |
项 | 对象 | 条目本身。这提供了对特定类型属性的访问。例如,联系人的地址。 |
设置
PagingModel使用QtInterfaceFramework的QtInterfaceFramework的Dynamic Backend System,并且从QIfAbstractFeatureListModel派生。与其他大多数QtInterfaceFramework功能类不同,PagingModel不会自动连接到可用的后端。
设置它的最简单方法是连接到其他功能使用的相同后端。例如,为了连接到媒体后端,请使用媒体播放器功能的实例。
Item { MediaPlayer { id: player } PagingModel { serviceObject: player.serviceObject } }
加载类型
支持多种加载数据的类型,因为PagingModel是为了与异步请求获取数据而设计的。默认启用的加载数据类型是FetchMore,它使用canFetchMore()和fetchMore()函数从QAbstractItemModel中获取新的数据,当视图达到当前可用数据的末尾时。由于获取可能需要一些时间,存在一个fetchMoreThreshold属性,它控制何时开始新的获取。
其他加载数据类型是DataChanged。与FetchMore不同,完整模型被预填充了空行,并且当数据函数第一次被调用时才会获取特定行的实际数据。一旦数据可用,将会触发该行上的dataChanged()信号,视图将开始渲染新数据。
请参阅loadingType的文档了解如何使用模式以及它们何时适宜。
有关QtInterfaceFramework中所有模型的更多信息,请参阅模型部分。
属性文档
capabilities : 枚举 |
保存后端的功能。
功能控制后端支持什么。它可以是由以下值组合而成的:
常量 | 描述 |
---|---|
NoExtras | 后端仅支持最小的功能集,且是状态的。 |
SupportsGetSize | 后端可以返回特定请求的最终项目数。这使得支持QIfPagingModel::DataChanged加载数据类型成为可能。 |
SupportsFiltering | 后端支持内容的过滤。使用QIfFilterAndBrowseModelInterface::availableContentTypesChanged()和QIfFilterAndBrowseModelInterface::queryIdentifiersChanged()将作为Qt Interface Framework查询语言的输入。 |
SupportsSorting | 后端支持内容的排序。使用QIfFilterAndBrowseModelInterface::availableContentTypesChanged()和QIfFilterAndBrowseModelInterface::queryIdentifiersChanged()将作为Qt Interface Framework查询语言的输入。 |
SupportsAndConjunction | 后端支持同时处理多个过滤器,并可以使用AND连接同时组合这些过滤器。 |
SupportsOrConjunction | 后端支持同时处理多个过滤器,并可以使用OR连接同时组合这些过滤器。 |
SupportsStatelessNavigation | 后端是无状态的,支持同时处理多个实例的QIfFilterAndBrowseModel请求不同的数据。例如,一个按名字排序的艺术家请求和一个轨道请求。后端必须考虑所有这些请求都来自于当前同时可见的模型。 |
SupportsInsert | 后端支持在给定位置插入新项目。 |
SupportsMove | 后端支持在模型内移动项目。 |
SupportsRemove | 后端支持从模型中删除项目。 |
chunkSize : int |
保存请求后端接口的行数。
可以使用此属性来微调加载数据的性能。
较大的数据块意味着调用后端和潜在IPC的次数更少,但需要传输的数据更多,且请求完成前的等待时间可能更长。
count : int |
保持该模型中当前行数。
fetchMoreThreshold : int |
保持下一块数据加载前的行差异
可以通过此属性调整加载性能。当达到阈值时,将从后端请求下一块行数据。可以通过使用chunkSize属性定义要获取多少行。
阈值定义了缓存行结束前的行数。
注意:只有当loadingType设置为FetchMore时,此属性才会使用。
loadingType : 枚举 |
保持用于加载数据的当前加载类型。
它可以具有以下值之一:
常量 | 描述 |
---|---|
FetchMore | 这是默认值,如果不知道列表的最终大小(例如无限列表),则可以使用。列表将检测它接近末尾(fetchMoreThreshold),然后使用fetchMore和canFetchMore来获取下一块数据。此方法的缺点是您无法显示动态滚动条指示器,因为列表的内容大小是未知的。另一个问题是快速滚动,因为数据可能无法及时到达,滚动会停止。这可以通过fetchMoreThreshold属性进行调整。 |
DataChanged | 对于此加载类型,您需要知道列表中有多少项,因为会创建占位符项,并且在数据尚未准备好显示时,用户已经可以开始滚动。与FetchMore类似,数据也是分块加载数据。在这里可以安全地使用滚动指示器。代理器需要支持此方法,因为在第一次创建时它没有内容。 |
注意:更改此属性时,内容将被重置。
信号文档
fetchMoreThresholdReached() |
每当fetchMoreThreshold达到并且从后端请求新数据时,都会触发此信号。
注意:相应的处理程序是onFetchMoreThresholdReached
。
方法文档
object get(i) |
返回索引i处的项。
reload() |
重置模型并再次开始获取内容。
© 2024 Qt公司有限公司。包含在内的文档贡献是各自所有者的版权。此处的文档是根据自由软件基金会发布的GNU自由文档许可证第1.3版条款许可的。Qt及其相关标志是芬兰和/或其他国家的Qt公司有限公司的商标。所有其他商标均属于其各自所有者。