1

我正在开发一个包含QTreeWidget. 此小部件将具有带有子节点和/或其他兄弟节点的父节点。附加到每个节点将是一个唯一ID的整数和名称形式。

现在.....我可以或应该使用哪些方法将所有节点保存QTreeWidget到磁盘以及如何将它们读回??????

我要做的是遍历树并将每个节点保存到 sqlite 数据库中。我已经可以按照与树中完全相同的顺序执行此操作。但是......QTreeWidget及其相关QTreeWidgetItem对象没有可用于插入其他节点的 uniq 索引。

当我重建这棵树时,孩子们必须依附于他们的父母/祖先(那时他们已经存在于树中)。为此,我会跟踪ID已添加到树中的父母及其 s,例如parentID数组中的 (parent name, )。请注意,作为/parentID中的节点的位置与位置无关。它是由我自己创建的,并与节点名称一起存储在 sqlite db 中,就像某种标签一样,因为/不提供任何标签。QTreeWidgetWidgetItemQTreeWidgetQTreeWidgetItem

为了确定正确的父母我

  1. ParentIDsqlite DB 中获取,
  2. 搜索数组或QTreeWidget相同的ID
  3. 在 中选择该父级QTreeWidget
  4. 将 sqlite db 项目作为子节点添加到 treeview.

但是这种方式感觉很笨拙,因为每次添加节点时都会进行搜索,并且由于QTreeWidget/中缺少索引,WidgetItem我可以使用它来插入节点。

我知道这应该做得更优雅,资源更少。我不是在寻找确切的编码示例,而是更多地寻找使用 fromQTreeWidget和的方法和属性的想法和提示QTreeWidgetItem

有任何想法吗?

4

2 回答 2

0

我通过在其中设置一个值来使用 TreewidgetItem 的数据属性来管理它。使用该值作为参考来查找一个或多个甚至所有 TreewidgetItem(s) 可以轻松保存完整的树。

于 2013-02-14T11:29:09.987 回答
-1

将 treewidget 序列化为 xml 不是更自然吗?

如果是这样,QXmlStream 书签示例可能会提供一些灵感。

于 2011-12-08T18:21:18.070 回答