我正在开发一个包含QTreeWidget
的项目。此窗口小部件将具有包含子节点和/或其他兄弟节点的父节点。附加到每个节点将是整数形式的唯一ID
以及名称。
现在.....我可以或应该使用哪些方法将QTreeWidget
中的所有节点保存到磁盘以及如何在?????中重新读取它们
我要做的是遍历树并将每个节点保存到sqlite DB中。我已经能够以与树中完全相同的顺序执行此操作。但...... QTreeWidget
及其相关的QTreeWidgetItem
对象没有可用于插入其他节点的uniq索引。
当我重建树时,孩子必须依附于他们的父母/祖先(当时存在于树中)。为此,我会跟踪父级及其已添加到树中的ID
,如(父名,parentID
)在数组中。请注意,parentID
与位置无关,而是与QTreeWidget
/ WidgetItem
中的节点无关。它由我自己创建并存储在sqlite db allong中,其名称与节点名称相同,因为QTreeWidget
/ QTreeWidgetItem
不提供任何标记。
确定正确的父母
ParentID
QTreeWidget
搜索相同的ID
,QTreeWidget
,treeview
。但这种方式感觉很笨拙,因为每次添加节点时都会进行搜索,并且由于QTreeWidget
/ WidgetItem
内部缺少索引,我可以使用它来插入节点。
我知道这应该做得更优雅,资源更少。
我不是在寻找确切的编码示例,而是更多关于QTreeWidget
和QTreeWidgetItem
中使用的方法和属性的想法和提示。
有什么想法吗?
答案 0 :(得分:0)
我通过在TreewidgetItem中设置一个值来使用TreewidgetItem的data属性来管理它。使用该值作为参考来查找一个或多个甚至所有TreewidgetItem,可以轻松保存完整的树。
答案 1 :(得分:-1)
将treewidget序列化为xml会不会更自然?
如果是这样,QXmlStream Bookmarks Example可能会提供一些灵感。