from PySide import QtGui, QtCore, __version_info__ class Widget(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.treeView = QtGui.QTreeView(self) layout = QtGui.QVBoxLayout() layout.addWidget(self.treeView) button = QtGui.QPushButton('Add Row') button.clicked.connect(self.buttonClick) layout.addWidget(button) self.setLayout(layout) self.treeView.setModel(QtGui.QStandardItemModel()) crash = False if crash: self.treeView.setItemDelegateForColumn(0, QtGui.QStyledItemDelegate()) print(self.treeView.itemDelegateForColumn(0)) else: delegate = QtGui.QStyledItemDelegate() self.treeView.setItemDelegateForColumn(0, delegate) print(self.treeView.itemDelegateForColumn(0)) # It will still crash if this isn't here... self.treeView.model().setHorizontalHeaderLabels(('1', '2', '3')) @QtCore.Slot() def buttonClick(self): self.treeView.model().appendRow((QtGui.QStandardItem('1'), QtGui.QStandardItem('2'), QtGui.QStandardItem('3'))) if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) print(__version_info__, QtCore.qVersion()) widget = Widget() widget.show() sys.exit(app.exec_())