Код: Выделить всё
mysql> select * from EnumerateGroups;
+----+---------+------------------+-----------+-------------+
| id | Root_id | name | aliasname | description |
+----+---------+------------------+-----------+-------------+
| 1 | 0 | parent_one | NULL | NULL |
| 2 | 0 | parent_two | NULL | NULL |
| 3 | 1 | child_one1 | NULL | NULL |
| 4 | 1 | child_one2 | NULL | NULL |
| 5 | 0 | parent_three | NULL | NULL |
| 6 | 5 | child_three1 | NULL | NULL |
| 7 | 4 | child_for_child1 | NULL | NULL |
| 8 | 4 | child_for_child2 | NULL | NULL |
+----+---------+------------------+-----------+-------------+Нужно создать TreeView в котором отображалось бы что-то вроде:
Код: Выделить всё
- parent_one
|--- child_one1
|--- child_one2
|------ child_for_child1
|------ child_for_child2
- parent_two
- parent_three
|--- child_three1Ну то что мне на голову приходит это(на Питоне):
Код: Выделить всё
def findItem(ident, model):
numRows = model.rowCount()
for row in xrange(numRows):
if int(model.index(row, 0).data().toString()) == ident:
return model.index(row, 0)
return None
self.tree = MyTreeView(self)
self.tree.setColumnCount(3)
data = QtSql.QSqlQuery("SELECT id, Root_id, name FROM EnumerateGroups", self.db)
while data.next():
parent = findItem(int(data.value(1).toString()), self.tree.model())
if parent != None:
item = QtGui.QTreeWidgetItem(self.tree.itemFromIndex(parent))
else:
item = QtGui.QTreeWidgetItem(self.tree)
item.setText(0, data.value(0).toString())
item.setText(1, data.value(1).toString())
item.setText(2, data.value(2).toString())И этот код работает, но только если количество уровней не более 2х. Он бы и работал при любом количестве уровней если бы model.index(Х, 0) перемещалось не только по родителям но и по потомкам. Может кто подскажет как лучше сделать?