PagingModel QML类型

PagingModel是一个通用的-model,使用“分页”(Paging)方法来加载数据。 更多...

导入语句import QtInterfaceFramework
实例化 QIfPagingModel
继承

AbstractFeatureListModel

继承自

FilterAndBrowseModel

属性

信号

方法

详细描述

应该直接使用PagingModel或作为基类,当需要在大型的ListView中呈现大量数据时。

该模型只 fetches它实际需要的 regex,并且可以通过loadingType属性来配置如何进行。

模型中的所有行都需要从StandardItem派生。

该模型中以下功能可用

角色名称类型描述
名称字符串条目名称。例如,地址簿中联系人的姓名,或艺术家列表中的艺术家姓名。
类型字符串条目的类型。例如,“artist”,“track”,“contact”。
对象条目本身。这提供了对特定类型属性的访问。例如,联系人的地址。

设置

PagingModel使用QtInterfaceFramework的QtInterfaceFrameworkDynamic 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公司有限公司的商标。所有其他商标均属于其各自所有者。