【发布时间】:2011-12-08 14:35:47
【问题描述】:
我正在处理一个包含QTreeWidget 的项目。此小部件将具有带有子节点和/或其他兄弟节点的父节点。附加到每个节点的将是一个唯一的ID,其形式为整数和名称。
现在.....我可以或应该使用哪些方法将QTreeWidget中的所有节点保存到磁盘以及如何将它们读回?????
我要做的是遍历树并将每个节点保存到 sqlite 数据库中。我已经可以按照与树中完全相同的顺序执行此操作。但是......QTreeWidget 及其相关的QTreeWidgetItem 对象没有可用于插入其他节点的 uniq 索引。
当我重建树时,孩子必须依附于他们的父母/祖先(那时他们已经存在于树中)。为此,我会跟踪已添加到树中的父母及其IDs,例如数组中的(父母姓名,parentID)。请注意,parentID 与作为QTreeWidget/WidgetItem 内部节点的位置无关。它是我自己创建的,并与节点名称一起存储在 sqlite db 中,就像某种标签一样,因为QTreeWidget/QTreeWidgetItem 不提供任何标签。
确定正确的父I
- 从 sqlite DB 中获取
ParentID, - 在数组或
QTreeWidget中搜索相同的ID, - 在
QTreeWidget中选择该父项, - 将 sqlite db 项作为子节点添加到
treeview。
但是这种方式感觉很笨拙,因为每次添加节点时都要进行搜索,并且因为QTreeWidget/WidgetItem 中缺少索引,我可以用来在周围插入节点。
我知道这应该做得更优雅,资源消耗更少。
我不是在寻找确切的编码示例,而是更多来自QTreeWidget 和QTreeWidgetItem 的方法和属性的想法和提示。
有什么想法吗?
【问题讨论】:
标签: python sqlite pyqt qtreewidget qtreewidgetitem