用Qt和QSortFilterProxyModel实现不同的视图

Implementing different views with Qt and QSortFilterProxyModel

本文关键字:视图 实现 Qt QSortFilterProxyModel      更新时间:2023-10-16

我目前正在使用Qt和QML为嵌入式系统编写一个AVOD门户应用程序的原型。

基本上,我有一个媒体目录(音乐、流媒体、电影等)。我计划根据用户的选择,对媒体有不同的看法:
  • 查看所有媒体
  • 只查看电影媒体
  • 仅查看音乐等

为此,我计划实现一个QAbstractListModel来实现我的整个目录。然后,我计划根据用户的选择实现不同的QSortFilterProxyModel对象来过滤显示(参见。上图).

我一直在使用MVC与Qt一段时间,但我从来没有使用代理模型。因此,在进入代码之前,我想知道它是否是一个可靠的解决方案,如果它适合模型集成到QML ?

z

我想知道这是否是一个可靠的解决方案,如果它适合模型集成到QML?

是,是。

代理模型是在幕后查询其他模型的模型。一个模型是一个代理,这是一个实现细节,对模型的用户(例如视图)是不可见的。从模型用户的角度来看,作为代理的模型没有什么特别之处。一个代理模型"只是"一个QAbstractItemModel加上一些方便的代码,如果你碰巧从一个代理基类派生。

换句话说,代理模型没有太多:它必须满足放在QAbstractItemModel上的所有需求,因为它是一个。

所以,是的,你的方法会成功。