繁体   English   中英

Qt表模型到树模型

[英]Qt Table model to Tree model

在Qt中,我有一个引入的sqlite数据库。其中一个表(configTable)附加了QSqlTableModel

该表具有简单的2列键/值结构。 这些键是带有类似于文件夹的值的字符串,例如“ general / name”,“ general / version”,“ foo / bar / baz”等。这些值只是任意的变体。

我想在易于浏览的QTreeView而不是QTableView显示此数据,因为我的键结构非常适合QTreeView

在我重新实现类和各种疯狂的东西之前-是否有一个优雅的解决方案? 如果我重新实现或扩展类,应该看哪一个?

谢谢。

您必须自己在value/value/value列表和树模型之间进行解析+映射。 但是有一种(棘手的)Qt方法可以做到这一点。

基于QAbstractItemModel类, Qt Model-View体系结构可以表示许多不同的数据结构。 Qt模型必须实现一些告诉视图的功能:多少列,行,子级等。


列表模型(Qt提供QAbstractListModel ),基本上是一个对视图说的模型:

  • 我有一个根项(所有数据项均由QModelIndex表示,根具有无效的父项)
  • 此根项目只有一列
  • 此根项目的行数与列表中包含元素的行数相同

树模型将为每个QModelIndex返回适当的QModelIndex Qt的抽象模型实际上允许每个子项成为一个表( QModelIndex始终具有一个父项一个行列索引)。


长话短说,您必须创建一个代理模型( QAbstractProxyModel或合适的子类,但是出于您的需要,我认为没有一个)。 该代理将转换QSqlTableModel发送的数据,在这里您可以告诉视图您实际上有一个树而不是一个列表。

您的根项目是数据库键列表( foo/bar/whatever第一个元素)中的项目,但是您需要重新分组所有具有相同键的根项目。

AFAIK您只能手动设置。

基本上,因为您如何看待Qt知道如何将数据转换为树模型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM