Когда вы звоните setColumnWidth
, Qt будет делать эквивалент:
self.view.header().resizeSection(column, width)
Затем, когда вы звоните setModel
, Qt будет (среди прочего) делать эквивалент:
self.view.header().setModel(model)
Таким образом, ширина столбца устанавливает , но не в модели, с которой заканчивается древовидное представление.
tl;dr
: установите ширину столбца после Вы задали модель.
РЕДАКТИРОВАТЬ
Вот простой демонстрационный скрипт, основанный на вашем примере:
from PyQt4 import QtGui, QtCore
class Window(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.model = QtGui.QStandardItemModel()
self.view = QtGui.QTreeView()
self.view.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
self.view.setModel(self.model)
self.setCentralWidget(self.view)
parent = self.model.invisibleRootItem()
for item in 'One Two Three Four'.split():
parent.appendRow([
QtGui.QStandardItem(item),
QtGui.QStandardItem(),
QtGui.QStandardItem(),
])
self.view.setColumnWidth(0, 800)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())