【发布时间】:2015-01-10 19:19:19
【问题描述】:
我有一个 QTreeView,它通过 QSortFilterProxyModel 从 QAbstractItemModel 填充。
我已经实现了一个 DataStructure 类,它为数据和一个 TreeView(QAbstractItemModel) 类设置父/子关系 - 这很好用,并根据我的需要填充 QTreeView。
treeView 设置如下:
from PyQt4 import QtCore, QtGui
import data_Model
#DataStructure(data, parent=None)
rootNode = data_Model.DataStructure('_Holder')
for i in mainData:
mainRow = data_Model.DataStructure(i, rootNode)
for j in subData:
data_Model.DataStructure(j, mainRow)
self._proxyModel = QtGui.QSortFilterProxyModel()
self._model = data_Model.TreeModel(rootNode)
self._proxyModel.setSourceModel(self._model)
self.treeView.setModel(self._proxyModel)
我想更改此设置,以便将 subData 填充到 QTableWidget 中,该 QTableWidget 是特定列索引的相关 mainRow 的子级
我的尝试是删除:
for j in subData:
data_Model.DataStructure(j, mainRow)
从上面,每次设置主模型时调用下面:
def addChild(self, subData):
rowCount = self._proxyModel.rowCount()
widgetDict = {}
for i in range(rowCount):
for j in range(len(subData)):
#set model index as current row and column 5 onwards
modelIndex = self._proxyModel.mapToSource(self._proxyModel.index(i, 5 + j))
widgetDict[str(i) + str(j)] = QtGui.QListWidget().addItems(subData[j])
self.treeView.setIndexWidget(modelIndex, widgetDict[str(i) + str(j)])
setIndexWidget 调用似乎没有效果。我确信这是一种完全落后的方法,但我尝试在 data_Model 中包含 QListWidget 失败了。非常感谢任何有关如何进行此操作的指导(或如果可能!)或具体建议。
【问题讨论】: