2012-05-26 19 views
1

我需要一些樹視圖的幫助。當我指定的模型pyqt treeview不顯示超載模型

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

我發現,invisibleRootItem()不會自動指向根項目。只需指定parent = self.model.rootItem即可解決問題。