2011-12-02 3 views
9

나와 곰, 나는 여전히 QT에 익숙하지 않고 내 뇌를 랩핑하는 데 어려움을 겪고있다.QTreeView에서 어떻게 열 너비를 설정합니까?

내가 만든 두 개의 열이있는 QTreeView을 채워했습니다 : 열이 매우 좁은 제외

class AppForm(QMainWindow): 
    def __init__(self, parent = None): 
     super(AppForm, self).__init__(parent) 
     self.model = QStandardItemModel() 
     self.view = QTreeView() 
     self.view.setColumnWidth(0, 800) 
     self.view.setEditTriggers(QAbstractItemView.NoEditTriggers) 
     self.view.setModel(self.model) 
     self.setCentralWidget(self.view) 

모두의이 큰 작업입니다. setColumnWidth (0, 800)가 첫 번째 열을 넓히길 바랐지만 효과가없는 것 같습니다. 열 너비를 설정하는 적절한 방법은 무엇입니까? 당신이 setColumnWidth를 호출 할 때

답변

13

은, Qt는이에 해당 할 것입니다 : 그래서

self.view.header().setModel(model) 

: 당신이 setModel를 호출 할 때, 그리고

self.view.header().resizeSection(column, width) 

을, Qt는 (다른 것들 사이)에 해당 할 것 열 너비가 인 경우이 설정됩니다. 트리보기가 끝나는 모델에는 없습니다.

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_()) 
+0

setColumnWidth를 setModel 아래로 이동했지만 여전히 효과가없는 것 같습니다. 문제는 내가 채우지 않았거나 열의 양을 아직 설정하지 않은 것입니까? – ashground

+0

@ashground. 나를 위해 일하는 내 대답에 데모 스크립트를 추가했습니다. – ekhumoro

+0

굉장 - setColumnWidth를 다른 함수로 옮겨서 트리를 채운 후에 호출되도록했습니다. 모든 것이 예상대로 작동합니다. 당신의 도움을 주셔서 감사합니다! – ashground

9
self.view.resizeColumnsToContents() 

이 columnWidths에와 높이가 자신의 콘텐츠에 맞게 설정되어 있는지 확인합니다.

+0

QTreeView '개체에'resizeColumnsToContents '특성이 없습니다 – Sophus

+0

열이 아닌 resizeColumnToContents() –

관련 문제