pyqt treeview不显示重载模型

时间:2012-05-26 02:44:33

标签: treeview pyqt qstandarditemmodel

我需要一些树视图的帮助。当我将模型指定为

class TreeModel(QtGui.QStandardItemModel):

    def __init__(self,parent=None):
        QtGui.QStandardItemModel.__init__(self,parent)
        self.rootItem = QtGui.QStandardItem('root')

我可以使用

从窗口向树中添加项目
def on_actionAddItem_triggered(self,checked=None):

    if checked is None: 
        return

    parent = self.model.invisibleRootItem()
    parent.appendRow(QtGui.QStandardItem("test"))

但是当我尝试重载模型时,树视图不会更新。代码无法更新树视图。有人可以解释一下吗?

class TreeModel(QtGui.QStandardItemModel):

    def __init__(self,parent=None):
        QtGui.QStandardItemModel.__init__(self,parent)
        self.rootItem = QtGui.QStandardItem('root')

    def data(self,index,role):

        if role == QtCore.Qt.DisplayRole:
            row = index.row()
            text = self.rootItem.child(row)
            return text.text()

    def columnCount(self,parent=None):
        return 1

    def rowCount(self,parent=QtCore.QModelIndex()):
        return self.rootItem.rowCount()

    def headerData(self, column, orientation, role):
        if role == QtCore.Qt.DisplayRole:
            if orientation == QtCore.Qt.Horizontal:
                if column == 0:
                    return 'zero'

1 个答案:

答案 0 :(得分:1)

我发现,invisibleRootItem()不会自动指向根项目。只需指定parent = self.model.rootItem即可解决问题。