首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Qt表模型到树模型

Qt表模型到树模型
EN

Stack Overflow用户
提问于 2015-08-25 23:52:50
回答 2查看 1.1K关注 0票数 0

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

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

我希望用更易于浏览的QTreeView而不是QTableView来显示这些数据,因为我的键结构非常适合这样做。

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

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-12-13 17:18:24

您必须自己在value/value/value列表和树模型之间执行parsing+mapping。但是有一个(棘手的) Qt方法可以做到这一点。

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

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

  • I有一个根项目(所有数据项都由QModelIndex表示,根目录具有无效的父项)
  • 此根项目只有一个列
  • 此根项目的行数与您的列表中元素的行数

相同

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

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

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

票数 1
EN

Stack Overflow用户

发布于 2015-08-26 09:26:59

AFAIK您只能手动创建它。

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32208572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档