我当前要做的是获取一个填充的树(qtreewidget),它在底部的子级有复选框,如果复选框被选中,则将路径的文本返回给子级。我之所以要这样做,是因为如果检查了一个子项,它将更改字典中键的值。(创建树的“原始”字典)。下面是一个直观的例子来说明我的意思:
已编辑
研究
-主题1
--日期
---[]c
---[]天
---[]e
-主题2
--日期
---[]克
---[]小时
例如,如果有人检查“g”level child,那么是否有办法以[1,B,g]或1-B-g或1/B/g等形式获取到“g”的路径。?
其中一个子级别(例如在示例A和B中)也被设置为用户可编辑的。所以我需要来自树的信息,而不是树最初填充的信息。
我试过印刷self.ui.treeWidget索引没有真正的运气得到我想要的。我觉得似乎有一个简单的解决办法,但我似乎找不到。希望有人能帮忙!在
实际代码段:
for h,study in enumerate(tree_dict['study']):
study_name = study['study_name']
treeSTUDY = QtGui.QTreeWidgetItem(self.ui.treeWidget, [study_name])
treeSTUDY.setFlags(QtCore.Qt.ItemIsEnabled)
self.ui.treeWidget.expandItem(treeSTUDY)
for i,subject in enumerate(study['subject']):
subject = subject['ID']
treeSUBJECT = QtGui.QTreeWidgetItem(treeSTUDY, [subject_id])
treeSUBJECT.setFlags(QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled)
for j,visit in enumerate(subject['visit']):
scan_date = visit['date']
treeDATE = QtGui.QTreeWidgetItem(treeSUBJECT, [scan_date[4:6])
treeDATE.setFlags(QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled)
for k,ser in enumerate(visit['series']):
s_name = ser['name'] + '-' + ser['description']
count = str(ser['count'])
treeSCAN = QtGui.QTreeWidgetItem(treeDATE)
treeSCAN.setFlags(QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsUserCheckable)
treeSCAN.setCheckState(0, QtCore.Qt.Unchecked)
treeSCAN.setText(0, s_name)
treeSCAN.setText(1, ser['time'])
treeSCAN.setText(2, ser['number'])
treeSCAN.setText(3, 'count')
您只需要一个方法,该方法遍历父/子链,获取每个项的文本,直到父项是
None
:更新:
下面是一个演示脚本,演示如何获取选中项并检索其路径:
^{pr2}$相关问题 更多 >
编程相关推荐