Qt 如何正确实现同一数据集的不同视图选项
我目前正在构建模型视图体系结构,遇到了一个问题,我无法在internet上找到相关信息 我有一组复杂的数据,我想以两种(或更多)不同的方式向用户展示:Qt 如何正确实现同一数据集的不同视图选项,qt,mvvm,Qt,Mvvm,我目前正在构建模型视图体系结构,遇到了一个问题,我无法在internet上找到相关信息 我有一组复杂的数据,我想以两种(或更多)不同的方式向用户展示: 显示完整数据 仅显示中的选定(部分)信息 这些数据的打印方式对我来说无关紧要,但如果这有帮助的话,它要么在表视图(基本信息)中,要么在列视图(完整信息)中。这两个类别来自QT模型/视图框架 现在我考虑了两个实现这个的选项,并想知道我应该使用哪一个 选择1 我建立我的数据结构 将其包含在自定义模型中 专门化(子类)视图类,以便只打印我感兴趣的
- 显示完整数据
- 仅显示中的选定(部分)信息
- 我建立我的数据结构
- 将其包含在自定义模型中
- 专门化(子类)视图类,以便只打印我感兴趣的内容
- 我建立我的数据结构
- 专门化我的模型,只提供对相关数据的访问
- 使用standart视图在屏幕上打印
我还查看了QT委托,但这些类主要用于更改数据的外观。我没有找到使用代理忽略与一个视图无关的数据的方法。您完全正确地认为使用视图过滤数据是错误的。重新实现视图的唯一原因是对同一数据有不同的视图或对用户事件进行特殊处理 因此,有两种方法可以过滤数据: 1.创建两个共享数据的模型。这是一种标准方法——不在模型中保存数据 2.创建一个提供所有数据的模型,并创建一个继承自
QSortFilterProxyModel
的代理模型以过滤掉数据
您需要重新实现filterAcceptsColumn
方法以筛选出列,并需要重新实现filterAcceptsRow
以筛选出行
然后使用
查看模型
显示所有数据,或使用查看代理模型
显示一些数据。您所说的“选定数据”很重要。你的意思是从所有记录中漏掉一些列,漏掉一些行,还是两者都漏掉?从QT的角度来看,应该过滤掉的不是行或列,而是子元素。行的行(如果愿意),以及相关列数据。感谢您的回答。我非常喜欢QSortFilterProxyModel类,我将更深入地了解它。它看起来像是双模型方法的标准实现。我也很欣赏关于数据处理的链接,QT模型视图让我认为模型实际上应该“保存”数据。