【发布时间】:2018-03-06 16:38:45
【问题描述】:
从标题中可以看出,我使用 QStandardItemModel 来存储树结构。我在 QTreeView 中操作这个结构,而不是我需要以这种格式将它保存在数据库中:
|id|Parent|Child |
| 1| |ITEM01|
| 2| 1|ITEM02|
| 3| 2|ITEM03|
| 4| 3|ITEM04|
| 5| 4|ITEM05|
| 6| 5|ITEM06|
| 7| 6|ITEM07|
| 8| 3|ITEM08|
| 9| 3|ITEM09|
|10| 3|ITEM10|
表示这个结构:
ITEM01
║
╠═► ITEM02
║ ║
║ ╚═► ITEM03
║ ║
║ ╠═► ITEM04
║ ║ ║
║ ║ ╚═► ITEM05
║ ║ ║
║ ║ ╚═► ITEM06
║ ║ ║
║ ║ ╚═► ITEM07
║ ║
║ ╠═► ITEM08
║ ╠═► ITEM09
║ ╚═► ITEM10
换句话说,“id”唯一地代表一个节点,“parent”字段是对父节点的引用。根节点是一个空字段。
我的问题是:如何从 QStandardItemModel 获取唯一的 id(int 格式)? 我试过 QModelIndex::row() 和 QPersistentModelIndex::row() 但它似乎不是唯一的。
非常感谢。
【问题讨论】:
-
你可以更好地解释一下自己,你的问题让我很困惑,你的问题是将 QStandardItemModel 保留在具有该结构的数据库中吗?
-
在你的例子中 QModelIndex::row() 和 QPersistentModelIndex::row() 不是唯一的?
-
感谢您对我的问题感兴趣,根据 Kuba Ober 的建议,我找到了解决方案。并对不清楚的地方感到抱歉。无论如何,我的问题与将树结构从 QStandardItemModel 导出到数据库表的方式有关,其中字段“id”标识一个节点,字段“parent”是对父节点的自我引用。我的第一个尝试是从 QModelIndex::row() 获取唯一标识符,但它仅对同一父级下的行是唯一的。
标签: sql qt qtreeview qstandarditemmodel qmodelindex