Я работаю над проектом, который содержит QTreeWidget
. Этот виджет будет иметь родительские узлы с дочерними узлами и / или другими узлами. К каждому узлу будет прикреплен уникальный ID
в виде целого числа, а также имени.
Теперь ..... какие методы можно или нужно использовать для сохранения всех узлов в QTreeWidget
на диск и как их прочитать обратно в ?????
То, что я хотел бы сделать, - это пройтись по дереву и сохранить каждый узел в базу данных sqlite. Я уже могу сделать это в том же порядке, что и в дереве. НО ...... QTreeWidget
и связанные с ним QTreeWidgetItem
объекты НЕ имеют уникального индекса, который можно использовать для вставки других узлов вокруг.
Когда я перестраиваю дерево, дети должны быть привязаны к своим родителям / предкам (которые к тому времени существуют в дереве). Для этого я отслеживаю родителей и их ID
, которые я уже добавил в дерево, например (имя родителя, parentID
) внутри массива. Обратите внимание, что parentID
не имеет никакого отношения к расположению как узлу внутри QTreeWidget
/ WidgetItem
. Он создается мной и хранится в базе данных sqlite db с именем узла, так же как какой-то тег, поскольку QTreeWidget
/ QTreeWidgetItem
не предоставляет никаких.
Чтобы определить правильный родитель I
- взять
ParentID
из базы данных sqlite,
- поиск в массиве или
QTreeWidget
для того же ID
,
- выберите этого родителя в
QTreeWidget
,
- добавить элемент базы данных sqlite в качестве дочернего узла к родительскому элементу в
treeview
.
Но это кажется неуклюжим из-за поиска каждый раз, когда добавляется узел, и из-за отсутствующего индекса внутри QTreeWidget
/ WidgetItem
, который я могу использовать для вставки узлов вокруг.
Я знаю, что это должно быть сделано намного элегантнее и менее ресурсоемко.
Я не ищу точные примеры кодирования, но больше для идей и подсказок методов и свойств для использования из QTreeWidget
и QTreeWidgetItem
.
Есть идеи?