QIfFilterAndBrowseModelInterface 类
QIfFilterAndBrowseModelInterface 定义了 QIfFilterAndBrowseModel 功能类的后端接口。详情...
头文件 | #include <QIfFilterAndBrowseModelInterface> |
qmake | QT += 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 void | setContentType(const QUuid &identifier, const QString &contentType) = 0 |
virtual void | setupFilter(const QUuid &identifier, QIfAbstractQueryTerm *term, const QList<QIfOrderTerm> &orderTerms) = 0 |
信号
void | availableContentTypesChanged(const QStringList &availableContentTypes) |
void | canGoBackChanged(const QUuid &identifier, bool canGoBack) |
void | canGoForwardChanged(const QUuid &identifier, const QVector<bool> &indexes, int start) |
void | contentTypeChanged(const QUuid &identifier, const QString &contentType) |
void | queryIdentifiersChanged(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 中的更新函数之一时,会将其转发到后端的匹配函数: insert、 move 和 remove。所有这些函数都需要发出 dataChanged 信号。
成员函数文档
[信号]
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()。
另请参阅: identifiersFromItem、queryIdentifiersChanged 和 contentTypeChanged。
[纯虚函数]
void QIfFilterAndBrowseModelInterface::setupFilter(const QUuid &identifier, QIfAbstractQueryTerm *term, const QList<QIfOrderTerm> &orderTerms)
为通过 identifier 标识的 QIfFilterAndBrowseModel 实例设置过滤条件。
term 和 orderTerms 参数是查询的表示,用于过滤和排序。当后端不支持过滤和排序,或者 QIfFilterAndBrowseModel 实例中没有定义查询时,term 参数为空指针。
© 2024 Qt 公司。本文档中的贡献归各自所有者所有。本文档按照免费软件基金会发布的 GNU 自由文档许可协议版本 1.3 许可。Qt 和相应的商标是芬兰 Qt 公司及其在全世界其他国家的商标。所有其他商标归各自所有者所有。