SearchAndBrowseModel QML 类型
SearchAndBrowseModel 是一个通用的模型,可用于搜索、浏览、过滤和排序数据。 更多信息...
导入语句 | import QtIvi 1.0 |
实例化 | QIviSearchAndBrowseModel |
继承 |
属性
- availableContentTypes : list<string>
- canGoBack : bool
- contentType : string
- query : string
方法
- bool canGoForward(i)
- void goBack()
- SearchAndBrowseModel goForward(i, navigationType)
- indexOf(StandardItem item)
- insert(int index, StandardItem item)
- move(int cur_index, int new_index)
- remove(int index)
详细描述
SearchAndBrowseModel 应用场景:当需要在ListView中展示大量数据时,可以直接使用该模型或将其作为基类。
模型基于以下基本原理:过滤和排序数据的位置创建而不是检索所有数据并在本地进行排序或过滤。此外,SearchAndBrowseModel 只获取其实际需要的数据,并且可以配置如何获取这些数据。
模型中的所有行都需要从 StandardItem 继承。
该模型中可用以下角色
角色名称 | 类型 | 描述 |
---|---|---|
name | string | 项目的名称。例如:通讯录中的一个联系人名称,或在艺术家列表中的艺术家名称。 |
type | string | 项目的类型。例如:"artist"、"track"、"contact"。) |
item | object | 项目本身。这提供了对特定类型属性访问的权限。例如:联系人的地址。 |
canGoForward | bool | 如果此项目可用于向前进一级并显示下一组项目,则为 true。 |
设置
SearchAndBrowseModel 使用了 QtIviCore 的 动态后端系统,并继承自 QIviAbstractFeatureListModel。与大多数 "QtIvi 特性类" 不同,SearchAndBrowseModel 不会自动连接到可用的后端。
最简单的方法是连接到另一个特性使用的相同后端。例如,要连接到媒体后端,请使用 mediaplayer 特性的实例
Item { MediaPlayer { id: player } SearchAndBrowseModel { serviceObject: player.serviceObject } }
内容类型
一旦模型连接到后端,需要选择 contentType。所有可能的内容类型都可以从 availableContentTypes 属性中查询。正如其名称所暗示的,此属性指定了应当在模型中显示的内容类型。对于 mediaplayer 示例,可能的内容类型可以是 "track","album" 和 "artist"。
过滤和排序
SearchAndBrowseModel 的主要用途之一是提供一种强大的方式来过滤和排序底层数据模型的内容。如上所述,过滤和排序应该在数据产生的地方发生。为了使这在多个后端之间工作,发明了 Qt IVI 查询语言。
使用 query 属性来排序模型内容:例如,通过设置字符串 "[/name]",内容将按名称升序排序。
对于过滤,使用相同的属性但不要使用括号,例如 "name='Example Item'" 只显示将 'name' 属性设置为 'Example Item' 的项。
过滤和排序也可以结合在一个字符串中,并且过滤部分也可以更复杂。更多详细信息可以在详细的 Qt IVI 查询语言 文档中找到。
浏览
除了过滤和排序,SearchAndBrowseModel 还支持通过不同内容类型的层次结构进行浏览。解释这最简单的方法就是看看现有的媒体示例。
在实现所有可用媒体文件库视图时,您可能希望提供一种让用户浏览媒体数据库并选择歌曲的方式。您也可能想提供多个起点并从那里限制结果。例如。
- Artist -> Album -> Track
- Album -> Track
- Track
这可以通过定义一个复杂的过滤查询来实现,该查询会将之前选择的项目考虑在内。这是最强大的方法,因为开发者/设计师可以定义浏览顺序,并且可以轻松地更改它。缺点是后端也需要支持这种方式进行过滤和排序,但这并不总是案例。一个很好的例子是一个 DLNA 后端,其中服务器已经定义了一个固定的浏览顺序。
SearchAndBrowseModel 提供以下方法/属性用于浏览
导航类型
在浏览可用数据时,SearchAndBrowseModel 支持两种导航类型:对于大多数用例,简单的 InModelNavigation 类型就足够了。通过使用这种方式,当导航时当前模型实例的内容类型会改变,并且模型会被重置以显示新数据。另一种导航类型是 OutOfModelNavigation,并保留当前模型实例不变。相反,goForward() 方法返回一个新的模型实例,其中包含新数据。这对于同时需要打开多个视图的情况非常有用。例如,当在 QML StackView 中使用时。
StackView { id: stack initialItem: view Component { id: view ListView { model: SearchAndBrowseModel { contentType: "artist" } delegate: MouseArea { onClicked: { stack.push({ "item" : view, "properties:" { "model" : model->goForward(index, SearchAndBrowseModel.OutOfModelNavigation) }}); } } } } }
注意: 请参阅PagingModel文档了解数据加载方式,以及模型章节了解QtIvi中所有模型的更多信息。
另请参阅 goForward()。
属性文档
包含所有可用的内容类型
另请参阅 contentType。
内容类型 : 字符串 |
查询 : 字符串 |
方法文档
在导航历史记录中后退一层。
请参阅浏览以获取更多信息。
SearchAndBrowseModel goForward(i, navigationType) |
使用索引为 i 的项目并显示下一组项目。
常量 | 描述 |
---|---|
InModelNavigation | 新内容将被加载到该模型中,现有模型数据将被重置 |
OutOfModelNavigation | 将返回一个新的模型,该模型加载新内容。此模型的数据将不会被更改且仍可使用。 |
注意: 是否支持OutOfModelNavigation导航类型由后端决定。
请参阅浏览以获取更多信息。
indexOf(StandardItem item) |
确定 item 在此模型中的索引。
结果以PendingReply返回。
insert(整数 index, StandardItem item) |
将位置为cur_index的项目移动到新的位置new_index。
返回的PendingReply会通知操作何时完成或是否失败。
remove(int index) |
移除位置为index的项目。
返回的PendingReply会通知操作何时完成或是否失败。
©2020 The Qt Company Ltd. 本文档的贡献者保留各自的版权。提供的文档根据由自由软件基金会发布、GNU自由文档许可证版本1.3的条款进行许可。Qt及其相关标志是The Qt Company Ltd.在芬兰以及/或其他国家和地区的商标。所有其他商标均为其各自所有者的财产。