Qt将数据结构分成组

时间:2015-07-14 20:02:02

标签: c++ qt data-structures

我有一个问题我正在努力解决但是由于我正在学习Qt的过程中我处于停滞状态,这反过来又引起了对'Qt'方式的怀疑解决问题。虽然在时间复杂度方面是最有效的。所以我逐行读取文件(文件数量在10-2000,000之间)。目前我的方法是将永久行转储到QVector

Qvector <QString> lines;
lines.append("id,name,type");
lines.append("1,James,A");
lines.append("2,Mark,B");
lines.append("3,Ryan,A");

假设上述结构,我想给用户三个基于类型字段显示数据的视图。数据以其原始形式以逗号分隔。我的问题是,实现这一目标的最优雅,最有效的方法是什么?

注意:对于视觉辅助,最终结果类型模拟Microsoft访问。因此左侧会有表格列表。在我的情况下,这些表格名称将是分组字段(A,B)的值。当我在这两个列表项之间切换时,中央视图(表格)将重新填充以包含特定的组数据。

我应该将数据分成x个结构吗?或者这会导致不必要的开销?

非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

最后,您需要使用某种实现QAbstractItemModel的数据模型来公开数据,以及连接到它的一个或多个视图以显示数据。

如果数据不必是可编辑的,您可以实现从QAbstractTableModel派生的自定义表模型,该模型将文件映射到内存中(使用QFile::map),并在运行时逐步解析它(实施canFetchMorefetchMore)。

如果数据是可编辑的,那么在解析文件,附加QSqlTableModel并附加一些视图时,最好将它全部放入临时sqlite表中。

当用户想要保存更改时,您只需遍历模型并将其转储到文本文件中。