Python PyQt如何在QTreeView中单击时传递索引
我有一个以树的形式包含数据的字典:Python PyQt如何在QTreeView中单击时传递索引,python,python-3.x,pyqt5,Python,Python 3.x,Pyqt5,我有一个以树的形式包含数据的字典: tree = {'parent 1': {'child 1 - 1': {'child 1 - 1 - 1': {'child 4 levl parent 1': {}}}, 'child 1 - 2': {'children 2- 1': {}}, 'child 1- 3': {}}, 'parent 2': {'parent 2- 1 - chil': {}}, 'parent 3': {}, 'parent 4': {}} 接下来,我为这本词典建立一个
tree = {'parent 1': {'child 1 - 1': {'child 1 - 1 - 1': {'child 4 levl parent 1': {}}}, 'child 1 - 2': {'children 2- 1': {}}, 'child 1- 3': {}}, 'parent 2': {'parent 2- 1 - chil': {}}, 'parent 3': {}, 'parent 4': {}}
接下来,我为这本词典建立一个列表:
def treeRubrics(self):
self.treeList = QtWidgets.QTreeView()
self.treeList.setObjectName("treeList")
self.treeList.setMinimumSize(QtCore.QSize(200, 0))
self.treeList.setMaximumSize(QtCore.QSize(200, 16777215))
self.gridLayout.addWidget(self.treeList, 3, 0, 1, 1)
model = QtGui.QStandardItemModel()
self.populateTree(self.tree, model.invisibleRootItem())
self.treeList.setModel(model)
model.setHeaderData(0, QtCore.Qt.Horizontal, 'Records tree')
self.treeList.expandAll()
self.treeList.selectionModel().selectionChanged.connect(self.onSelectionChanged)
__sortingEnabled = self.treeList.isSortingEnabled()
self.treeList.setSortingEnabled(__sortingEnabled)
我用鼠标单击列表中的项目:
def onSelectionChanged(self, *args):
for sel in self.treeList.selectedIndexes():
val = "/"+sel.data()
while sel.parent().isValid():
sel = sel.parent()
val = "/" + sel.data()+ val
但这就是我仅获取选定名称列表的方式,例如:
/parent 1/child 1-1/child 1-1-1/child 4 level parent 1
我如何更改dict“tree”和代码,使树的每个元素都有自己的索引,当我单击时,我传递该记录的索引(在方法onSelectionChanged中获取该索引) 提供一个答案,我认为你的问题是什么还很不清楚。您正在创建一个
QtGui.QStandardItemModel
。因此,模型的每一项都已指定了索引。除此之外,您已经在对所选索引进行迭代。我似乎已经回答了你问题的方方面面。