QIviPagingModel 类

QIviPagingModel 是一个通用的模型,使用“分页”方法来加载数据。 更多信息...

头文件 #include <QIviPagingModel>
qmakeQT += ivicore
由下列实例化 PagingModel
继承自 QIviAbstractFeatureListModel
由下列继承

QIviSearchAndBrowseModel

公共类型

枚举LoadingType { FetchMore, DataChanged }
枚举Roles { NameRole, TypeRole, ItemRole }

属性

公共函数

QIviPagingModel(QObject *parent = nullptr)
Tat(int i) const
QtIviCoreModule::ModelCapabilitiescapabilities() const
intchunkSize() const
intfetchMoreThreshold() const
QVariantget(int i) const
QIviPagingModel::LoadingTypeloadingType() const
voidreload()
voidsetChunkSize(int chunkSize)
voidsetFetchMoreThreshold(int fetchMoreThreshold)
voidsetLoadingType(QIviPagingModel::LoadingType loadingType)

重写的公共函数

virtual boolcanFetchMore(const QModelIndex &parent) const override
virtual QVariantdata(const QModelIndex &index, int role) const override
virtual voidfetchMore(const QModelIndex &parent) override
virtual QHash<int, QByteArray>roleNames() const override
virtual introwCount(const QModelIndex &parent = QModelIndex()) const override

信号

voidcapabilitiesChanged(QtIviCoreModule::ModelCapabilities capabilities)
voidchunkSizeChanged(int chunkSize)
voidcountChanged()
voidfetchMoreThresholdChanged(int fetchMoreThreshold)
voidfetchMoreThresholdReached() const
voidloadingTypeChanged(QIviPagingModel::LoadingType loadingType)

重新实现受保护的函数

virtual voidclearServiceObject() override
virtual voidconnectToServiceObject(QIviServiceObject *serviceObject) override
virtual voiddisconnectFromServiceObject(QIviServiceObject *serviceObject) override

详细描述

当需要在ListView中展示大量数据时,可以直接使用QIviPagingModel或将其作为基类。

模型仅获取它真正需要的数据,并且可以通过loadingType属性来配置如何获取这些数据。

为模型填充数据的后端需要实现QIviPagingModelInterface类。

设置配置

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

设置它的最简单方法是连接到另一个特性使用的相同后端。例如,要连接到媒体后端,请使用 mediaplayer 特性的实例。

QIviMediaPlayer *player = new QIviMediaPlayer();
player->startAutoDiscovery();
QIviPagingModel *model = new QIviPagingModel();
model->setServiceObject(player->serviceObject());

加载类型

支持多种加载类型,因为QIviPagingModel旨在与异步请求一起使用以获取其数据。默认的FetchMore加载类型,并使用canFetchMore()/fetchMore()函数来获取新的数据,一旦视图到达当前可用数据的末尾。由于获取数据可能需要一些时间,因此有一个fetchMoreThreshold属性,该属性控制提前多少开始新的获取。

另一种加载类型是DataChanged。与FetchMore相比,整个模型预先填充了空行,并在第一次调用data()函数时获取特定行的实际数据。一旦数据可用,就会为该行触发dataChanged()信号,视图将开始渲染新数据。

有关模式的工作方式和何时适合使用的更多详细信息,请参阅LoadingType的文档。

有关QtIvi中所有模型的更多信息,请参阅模型部分。

成员类型文档

枚举 QIviPagingModel::LoadingType

常量描述
QIviPagingModel::FetchMore0这是默认的,可以在不知道列表最终大小的情况下使用(例如无限列表)。列表将检测到它接近末尾(fetchMoreThreshold),然后使用canFetchMorefetchMore获取下一块数据。这种方法的不利之处在于无法显示动态滚动条指示器,因为内容的最终大小未知。另一个问题可能是快速滚动,因为数据可能无法及时到达,滚动会停止。这可以通过fetchMoreThreshold属性进行微调。
QIviPagingModel::DataChanged1对于此加载类型,您需要知道列表中有多少项,因为会创建虚拟项,并且用户可以在数据尚未准备就绪显示的情况下开始滚动。类似于FetchMore,数据也是分块加载的。在此处可以安全地使用滚动指示器。委托需要支持此方法,因为当它首次创建时没有内容。

枚举 QIviPagingModel::Roles

常量描述
QIviPagingModel::NameRoleQt::DisplayRole项的名称。例如,通讯录中联系人的名称,或者艺术家列表中的艺术家名称。
QIviPagingModel::TypeRoleQt::UserRole项的类型。例如,“艺术家”、“曲目”、“联系人”。
QIviPagingModel::ItemRoleQt::UserRole + 1项本身。这提供了访问特定类型的属性。例如,联系人的地址。

属性文档

capabilities : const QtIviCoreModule::ModelCapabilities

包含模型当前内容的后端功能的特性。

特性控制当前contentType支持的内容。例如,过滤或排序。

访问函数

QtIviCoreModule::ModelCapabilitiescapabilities() const

通知信号

voidcapabilitiesChanged(QtIviCoreModule::ModelCapabilities capabilities)

chunkSize : int

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

此属性可用于微调加载性能。

更大的块意味着减少对后端和可能的IPC的调用次数,但需要传输更多数据,而且请求完成后可能需要更长的等待时间。

访问函数

intchunkSize() const
voidsetChunkSize(int chunkSize)

通知信号

voidchunkSizeChanged(int chunkSize)

count : const int

包含模型中的当前行数。

访问函数

virtual introwCount(const QModelIndex &parent = QModelIndex()) const override

通知信号

voidcountChanged()

fetchMoreThreshold : int

包含在加载下一块之前到末尾的行数差。

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

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

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

访问函数

intfetchMoreThreshold() const
voidsetFetchMoreThreshold(int fetchMoreThreshold)

通知信号

voidfetchMoreThresholdChanged(int fetchMoreThreshold)

loadingType : QIviPagingModel::LoadingType

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

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

访问函数

QIviPagingModel::LoadingTypeloadingType() const
voidsetLoadingType(QIviPagingModel::LoadingType loadingType)

通知信号

voidloadingTypeChanged(QIviPagingModel::LoadingType loadingType)

成员函数文档

QIviPagingModel::QIviPagingModel(QObject *parent = nullptr)

创建一个 QIviPagingModel。

parent 参数传递给 QIviAbstractFeatureListModel 基础类。

[信号] void QIviPagingModel::fetchMoreThresholdReached() const

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

template <typename T> T QIviPagingModel::at(int i) const

返回索引 i 的项,并将其转换为模板类型 T。

[重载虚函数] bool QIviPagingModel::canFetchMore(const QModelIndex &parent) const

重新实现: QAbstractItemModel::canFetchMore(const QModelIndex &parent) const.

[重载虚保护函数] void QIviPagingModel::clearServiceObject()

重新实现:QIviAbstractFeatureListModel::clearServiceObject().

[重载虚保护函数] void QIviPagingModel::connectToServiceObject(QIviServiceObject *serviceObject)

重新实现:QIviAbstractFeatureListModel::connectToServiceObject(QIviServiceObject *serviceObject).

[重载虚函数] QVariant QIviPagingModel::data(const QModelIndex &index, int role) const

重新实现:QAbstractItemModel::data(const QModelIndex &index, int role) const.

[重载虚保护函数] void QIviPagingModel::disconnectFromServiceObject(QIviServiceObject *serviceObject)

重新实现:QIviAbstractFeatureListModel::disconnectFromServiceObject(QIviServiceObject *serviceObject).

[重载虚函数] void QIviPagingModel::fetchMore(const QModelIndex &parent)

重新实现:QAbstractItemModel::fetchMore(const QModelIndex &parent).

QVariant QIviPagingModel::get(int i) const

返回索引 i 的项作为 QVariant

此函数旨在从 QML 使用。对于 C++,请使用 at()。

注意:此函数可以通过元对象系统从 QML 调用。请参阅 Q_INVOKABLE

void QIviPagingModel::reload()

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

注意:此函数可以通过元对象系统从 QML 调用。请参阅 Q_INVOKABLE

[重写虚函数] QHash<int, QByteArray> QIviPagingModel::roleNames() const

重新实现: QAbstractItemModel::roleNames() const.

©2020 Qt公司版权所有。本文档中的文档贡献属于各自所有者的版权。本提供的文档根据自由软件基金会发布的GNU自由文档许可证第1.3版许可。Qt及其相关标志是Qt公司(芬兰及其它国家的商标)。所有其他商标均为各自所有者的财产。