PagingModel QML 类型

.mime

导入声明import QtIvi 1.0
实例 QIviPagingModel
继承

AbstractFeatureListModel

由以下成员继承

SearchAndBrowseModel

属性

信号

方法

详细描述

当需要在一个ListView中展示大量数据时,应直接使用或以基类形式使用PagingModel。

此模型仅获取其实际所需的数据,并且可以使用loadingType属性配置如何实现。

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

在此模型中可用以下角色

角色名称类型描述
name字符串项目的名称。例如,地址簿中联系人的名称或艺术家列表中的艺术家名称。
type字符串项的类型。例如,“艺术家”、“轨道”、“联系人”。
item对象项目本身。这提供了对这些属性的具体类型访问权限。例如,联系人的地址。

配置它的设置

PagingModel 使用 QtIviCore 的 动态后端系统,并从 QIviAbstractFeatureListModel 派生。与大多数 “QtIvi 特性类” 不同,PagingModel 不自动连接到可用的后端。

最简单的设置方法是与另一个功能使用的相同后端连接。例如,使用 mediaplayer 特征的实例来连接媒体后端

Item {
    MediaPlayer {
        id: player
    }

    PagingModel {
        serviceObject: player.serviceObject
    }
}

加载类型

支持多种加载类型,因为 PagingModel 是为了与异步请求一起工作而设计的。默认的 FetchMore 加载类型使用 canFetchMore()/fetchMore() 函数来请求数据,一旦视图到达当前可用的数据的末尾,就会请求数据。由于请求数据可能需要一些时间,因此还有 fetchMoreThreshold 属性,该属性控制多早开始新一轮的获取操作。

另一种加载类型是数据变化。与获取更多不同,整个模型在预填充时使用空行,当第一次调用data()函数时才会获取特定行的实际数据。一旦数据可用,将触发dataChanged()信号,视图将开始渲染新数据。

有关模式和它们何时适合使用的更多详细信息,请参阅loadingType属性的文档。

QtIvi部分查看模型以了解更多关于所有模型的信息。

属性文档

capabilities : 枚举

包含后端的属性。

属性控制后端支持的内容。它可以是以下值的组合

常数描述
NoExtras后端仅支持最小功能集,并且是状态化的。
SupportsGetSize后端可以返回特定请求的最终项目数。这使得支持QIviPagingModel::DataChanged加载类型成为可能。
SupportsFiltering后端支持对内容进行过滤。QIviSearchAndBrowseModelInterface::availableContentTypesChanged()QIviSearchAndBrowseModelInterface::queryIdentifiersChanged()将用作Qt IVI查询语言的输入。
SupportsSorting后端支持对内容进行排序。QIviSearchAndBrowseModelInterface::availableContentTypesChanged()QIviSearchAndBrowseModelInterface::queryIdentifiersChanged()将用作Qt IVI查询语言的输入。
SupportsAndConjunction后端支持同时处理多个过滤器,并且可以通过使用AND结合将这些过滤器组合。
SupportsOrConjunction后端支持同时处理多个过滤器,并且可以通过使用OR结合将这些过滤器组合。
SupportsStatelessNavigation后端是无状态的,并支持同时处理多个不同数据的QIviSearchAndBrowseModel实例。例如,一个按名称排序的艺术家请求,另一个按轨道排序的请求。后端必须考虑这些请求由在同一时间内可见的模型发出。
SupportsInsert后端支持在给定的位置插入新项目。
SupportsMove后端支持在模型内部移动项目。
SupportsRemove后端支持从模型中删除项目。

chunkSize : int

包含从后端接口请求的行数。

可以使用此属性来微调加载性能。

更大的块意味着对后端以及潜在的IPC的调用次数更少,但需要传输的数据更多,可能需要 更长的时间来请求完成。


count : int

包含此模型中的当前行数。


fetchMoreThreshold : int

在加载下一个块之前,行增量到末尾的值。

该属性可用于微调加载性能。当达到阈值时,将从后端请求下一块行数据。通过使用 chunkSize 属性可以定义要获取的行数。

阈值定义了缓存行结束前的行数。

注意:此属性仅在将 loadingType 设置为 FetchMore 时使用。


loadingType : 枚举

包含当前用于加载数据的加载类型。

可以是以下值之一:

常数描述
FetchMore这是默认值,可用于您不知道列表最终大小的情况(例如无限列表)。列表将检测它接近结尾(fetchMoreThreshold),然后使用 canFetchMore 和 fetchMore 获取下一块数据。此方法的缺点是您无法显示一个根据列表内容重新调整大小的动态滚动条指示器,因为数据的大小是未知的。另一个问题可能是有快速的滚动,因为数据可能无法及时到达,并且滚动会停止。这可以通过 fetchMoreThreshold 属性进行调整。
DataChanged对于此加载类型,您需要知道列表中有多少项,因为会创建示例项,并且用户可以开始滚动,尽管数据还未准备好显示。类似于 FetchMore,数据也是分块加载的。在此处可以安全地使用滚动指示器。委托需要支持此方法,因为当它首次创建时它没有内容。

注意:更改此属性时,内容将重置。


信号文档

fetchMoreThresholdReached()

每当达到 fetchMoreThreshold 并从后端请求新数据时,都会发出此信号。

注意:相应的处理程序是 onFetchMoreThresholdReached


方法文档

object get(i)

返回索引 i 处的项目。


reload()

重置模型并再次开始获取内容。


© 2020 The Qt Company Ltd. 本文档中的文档贡献是各自所有者的版权。本提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款授予的。Qt 及相关标志是 The Qt Company Ltd 在芬兰以及/或全球其他国家的商标。所有其他商标均为各自所有者的财产。