QIfFilterAndBrowseModelInterface 类

QIfFilterAndBrowseModelInterface 定义了 QIfFilterAndBrowseModel 功能类的后端接口。详情...

头文件 #include <QIfFilterAndBrowseModelInterface>
qmakeQT += interfaceframework
继承 QIfPagingModelInterface

公共函数

virtual QIfPendingReply<QString>goBack(const QUuid &identifier) = 0
virtual QIfPendingReply<QString>goForward(const QUuid &identifier, int index) = 0
virtual QIfPendingReply<int>indexOf(const QUuid &identifier, const QVariant &item) = 0
virtual QIfPendingReply<void>insert(const QUuid &identifier, int index, const QVariant &item) = 0
virtual QIfPendingReply<void>move(const QUuid &identifier, int currentIndex, int newIndex) = 0
virtual QIfPendingReply<void>remove(const QUuid &identifier, int index) = 0
virtual voidsetContentType(const QUuid &identifier, const QString &contentType) = 0
virtual voidsetupFilter(const QUuid &identifier, QIfAbstractQueryTerm *term, const QList<QIfOrderTerm> &orderTerms) = 0

信号

voidavailableContentTypesChanged(const QStringList &availableContentTypes)
voidcanGoBackChanged(const QUuid &identifier, bool canGoBack)
voidcanGoForwardChanged(const QUuid &identifier, const QVector<bool> &indexes, int start)
voidcontentTypeChanged(const QUuid &identifier, const QString &contentType)
voidqueryIdentifiersChanged(const QUuid &identifier, const QSet<QString> &queryIdentifiers)

受保护函数

QSet<QString>identifiersFromItem()

详细描述

QIfFilterAndBrowseModelInterface 是由 QIfFilterAndBrowseModel 使用的接口

接口由 QIfFilterAndBrowseModel 对象发现,将其连接并设置

实现 QIfFilterAndBrowseModelInterface 遵循与 QIfPagingModelInterface 中描述的相同模式。此外,可以通过设置相应的功能来实现以下功能。

在实现类似媒体库之类的功能时,支持在多个层次结构中导航非常有用,例如:显示所有艺术家,选择其中一个并显示该艺术家的所有专辑。另请参阅 QIfFilterAndBrowseModel 的 浏览部分

canGoForwardChanged() 和 canGoBackChanged() 信号让 QIfFilterAndBrowseModel 知道如何导航。实际上,通过 goForward() 和 goBack() 函数来执行向前或向后的导航请求。

需要发出 availableContentTypesChanged() 信号来定义可以在后端浏览哪些类型,并让用户选择浏览的起点。

一旦用户选择了内容类型,就会调用 setContentType 函数,后端需要通过 contentTypeChanged 信号来通知新的 contentType。

如果后端支持在不将模型实例的状态本地保存的情况下进行导航,则可以设置 SupportsStatelessNavigation 功能。

筛选和排序

为了在后台支持对模型内容的排序和筛选,需要设置相应的功能:《a href="qtinterfaceframeworkmodule.html#modelcapabilities" translate="no">SupportsFiltering 和 《a href="qtinterfaceframeworkmodule.html#modelcapabilities" translate="no">SupportsSorting。为了允许复杂的筛选,还可以设置< 《a href="qtinterfaceframeworkmodule.html#modelcapabilities" translate="no">SupportsAndConjunction 和 《a href="qtinterfaceframeworkmodule.html#modelcapabilities" translate="no">SupportsOrConjunction。另请参阅 QIfFilterAndBrowseModel 的 筛选和排序部分

一旦在后台设置了内容类型,需要发出 queryIdentifiersChanged() 信号来告知前端可以使用所有标识符来筛选和排序模型。为了方便,可以使用 identifiersFromItem() 函数返回基于 QMetaObject 类型的所有属性。之后可以在 QIfFilterAndBrowseModel 上设置过滤器查询,并将导致调用 setupFilter()。所有后续获取模型内容的调用都需要在筛选数据上工作。

更改模型数据

为了允许更改模型中的项目,可以设置以下功能:

调用 QIfFilterAndBrowseModel 中的更新函数之一时,会将其转发到后端的匹配函数: insertmoveremove。所有这些函数都需要发出 dataChanged 信号。

另请参阅QIfFilterAndBrowseModel

成员函数文档

[信号] void QIfFilterAndBrowseModelInterface::availableContentTypesChanged(const QStringList &availableContentTypes)

在初始化阶段发出,以通知所有可用的内容类型(availableContentTypes)。

值作为指示提供给用户,说明可以使用哪些内容类型。

注意: QIfFilterAndBrowseModel 不检查 contentType 的有效性,这是后端的责任。

另请参阅 setContentType

[信号] void QIfFilterAndBrowseModelInterface::canGoBackChanged(const QUuid &identifier, bool canGoBack)

发送此信号通知由 identifier 表示的 QIfFilterAndBrowseModel 实例,是否可以退回到之前显示的数据集。如果该实例可以显示上一数据集,则 canGoBack 被设置为 true

有关如何使用此功能的更多信息,请参阅 Browsing

另请参阅 goBack

[信号] void QIfFilterAndBrowseModelInterface::canGoForwardChanged(const QUuid &identifier, const QVector<bool> &indexes, int start)

通知由 identifier 表示的 QIfFilterAndBrowseModel 实例,可以使用以下 indexes 显示一组新的数据。

参数 start 可以用来通知有限的索引集。此信号可以在调用 QIfPagingModelInterface::fetchData() 时发出,用于通知刚刚获取数据的当前状态。

有关如何使用此功能的更多信息,请参阅 Browsing

另请参阅 goForward

[纯虚函数] QIfPendingReply<QString> QIfFilterAndBrowseModelInterface::contentTypeChanged(const QUuid &identifier, const QString &contentType)

在调用 setContentType 后发出,以通知由 identifier 表示的 QIfFilterAndBrowseModel 实例关于其新的 contentType

另请参阅 setContentType

[纯虚函数] QIfPendingReply<QString> QIfFilterAndBrowseModelInterface::goBack(const QUuid &identifier)

向由 identifier 表示的 QIfFilterAndBrowseModel 实例请求返回到之前显示的数据集。

新的内容类型以 QIfPendingReply 的形式返回。一旦准备好,必须使用 setSuccess() 设置新内容类型,如果有错误,则使用 setFailed()。

有关如何使用此功能的更多信息,请参阅 Browsing

另请参阅 canGoBackChanged

[纯虚函数] QIfPendingReply<QString> QIfFilterAndBrowseModelInterface::goForward(const QUuid &identifier, int index)

请求由 identifier 表示的 QIfFilterAndBrowseModel 实例在 index 位置转到下一数据集。

新的内容类型以 QIfPendingReply 的形式返回。一旦准备好,必须使用 setSuccess() 设置新内容类型,如果有错误,则使用 setFailed()。

有关如何使用此功能的更多信息,请参阅 Browsing

另请参阅 canGoForwardChanged

[防护的] 模板 <typename T> QSet<QString> QIfFilterAndBrowseModelInterface::identifiersFromItem()

返回类型为 T 的所有属性。

这些可以作为标识符在 Qt 接口框架查询语言 中注册,使用 queryIdentifiersChanged() 信号。

[纯虚函数] QIfPendingReply<int> QIfFilterAndBrowseModelInterface::indexOf(const QUuid &identifier, const QVariant &item)

确定由 identifier 标识的模型中 item 的索引。

[纯虚函数] QIfPendingReply<void> QIfFilterAndBrowseModelInterface::insert(const QUuid &identifier, int index, const QVariant &item)

在由 identifier 标识的 QIfFilterAndBrowseModel 实例的当前数据集的 index 位置添加可浏览的 item

提供的项目可以由另一个模型或 QML 所拥有,因此预期后端存储它的内部表示。

另请参阅dataChanged()。

[纯虚函数] QIfPendingReply<void> QIfFilterAndBrowseModelInterface::move(const QUuid &identifier, int currentIndex, int newIndex)

将位于 currentIndex 的浏览项从由 identifier 标识的 QIfFilterAndBrowseModel 实例的当前数据集中移动到新位置 newIndex

另请参阅dataChanged()。

[信号] void QIfFilterAndBrowseModelInterface::queryIdentifiersChanged(const QUuid &identifier, const QSet<QString> &queryIdentifiers)

在调用 setContentType 时发出,以便通知由 identifier 标识的 QIfFilterAndBrowseModel 实例当前支持的 queryIdentifiers

queryIdentifiers 用于设置 Qt 接口框架查询语言,以便能够显示无效查询的错误信息。不发出此信号将导致 Qt 接口框架查询语言 不限制可能的标识符。

[纯虚函数] QIfPendingReply<void> QIfFilterAndBrowseModelInterface::remove(const QUuid &identifier, int index)

从由 identifier 标识的 QIfFilterAndBrowseModel 实例的当前数据集中移除位于 index 位置的浏览项。

另请参阅dataChanged()。

[纯虚函数] void QIfFilterAndBrowseModelInterface::setContentType(const QUuid &identifier, const QString &contentType)

为通过 identifier 标识的 QIfFilterAndBrowseModel 实例设置 contentType。提供的 contenType 可包含额外的路径信息。编码由 goForward() 方法定义。如果 contentType 无效,应使用 error() 信号。

注意: QIfFilterAndBrowseModel 不检查 contentType 的有效性,这是后端的责任。

如果 QIfFilterAndBrowseModel 支持过滤(见 QIfPagingModel::capabilitiesChanged),后端需要在 contentType 设置后发出 queryIdentifiersChanged 信号。

最后,后端已设置 contentType 并准备好使用时,需要发出 contentTypeChanged 信号。

调用此函数之后会调用 setupFilter() 和 fetchData()。

另请参阅: identifiersFromItemqueryIdentifiersChangedcontentTypeChanged

[纯虚函数] void QIfFilterAndBrowseModelInterface::setupFilter(const QUuid &identifier, QIfAbstractQueryTerm *term, const QList<QIfOrderTerm> &orderTerms)

为通过 identifier 标识的 QIfFilterAndBrowseModel 实例设置过滤条件。

termorderTerms 参数是查询的表示,用于过滤和排序。当后端不支持过滤和排序,或者 QIfFilterAndBrowseModel 实例中没有定义查询时,term 参数为空指针。

© 2024 Qt 公司。本文档中的贡献归各自所有者所有。本文档按照免费软件基金会发布的 GNU 自由文档许可协议版本 1.3 许可。Qt 和相应的商标是芬兰 Qt 公司及其在全世界其他国家的商标。所有其他商标归各自所有者所有。