获取QTreeView 上显示的全部数据,并且将QtreeView 显示的数据关系 转换为 对应的数据结构表示,可以知道根节点下有几个子节点,在这些子节点下各自又有几个子节点,各自内容是什么
时间: 2024-02-09 13:08:07 浏览: 69
QTreeView递归实现展开或者闭合某个节点下面的所有子节点
您可以使用QTreeView的model()函数获取QTreeView使用的QAbstractItemModel,然后根据这个model来获取所有显示的数据。可以使用QAbstractItemModel的rowCount()和columnCount()函数获取根节点下的子节点数和每个子节点下的子节点数。使用data()函数获取每个节点的内容。然后,您可以使用这些信息创建一个对应的数据结构表示。
以下是一个示例代码,可以获取QTreeView上的数据并将其转换为树形结构表示:
```python
from PyQt5.QtCore import QModelIndex
class Node:
def __init__(self, name, parent=None):
self.name = name
self.parent = parent
self.children = []
def add_child(self, child):
self.children.append(child)
def tree_from_qtreeview(treeview):
model = treeview.model()
root = Node('Root')
indexes = [QModelIndex()]
while indexes:
index = indexes.pop(0)
node = Node(model.data(index), root)
parent = index.internalPointer()
if parent is not None:
parent_node = parent.node
parent_node.add_child(node)
node.parent = parent_node
else:
root.add_child(node)
for row in range(model.rowCount(index)):
child_index = model.index(row, 0, index)
indexes.append(child_index)
return root
```
这个代码首先创建了一个根节点,然后遍历QTreeView中的所有节点,将它们添加到对应的父节点下。最后返回整个树形结构的根节点。
阅读全文