どうも!たっくんです
QTreeViewは、一覧を作りながらもヘッダを作れていいですよね!(*´ω`*)
だけど!
たまーに、ちょっとコレじゃない感の幅のときがありますよね・・・そんな時に便利な設定方法をご紹介したいと思います!
QHeaderView
QTreeViewのヘッダの設定は、「QHeaderView」を経由して行います!QTreeViewの「header」から取得して設定を変更していきます!
QHeaderView.setStretchLastSection
デフォルトでは、カラムの一番右の場所がストレッチするようになっています。まずはこの設定をOFFにしましょう!
from PySide import QtCore, QtGui class MainWindow(QtGui.QWidget): def __init__(self, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) model = QtGui.QFileSystemModel(self) model.setFilter(QtCore.QDir.Files) model.setNameFilters(['*.ma', '*.mb']) model.setNameFilterDisables(False) index = model.setRootPath('C:/Program Files/Autodesk/Maya2016.5/Examples/Modeling/Sculpting_Base_Meshes/Animals') mainLayout = QtGui.QVBoxLayout(self) view = QtGui.QTreeView(self) view.setModel(model) view.setRootIndex(index) mainLayout.addWidget(view) view.header().setStretchLastSection(False)
QHeaderView.setResizeMode
各カラムにはリサイズをどのように行うか設定があります。StretchやResizeToContentsをうまく組み合わせて、重要なところが広くなるようにすると良いと思います!(`・ω・´)ゞ
from PySide import QtCore, QtGui class MainWindow(QtGui.QWidget): def __init__(self, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) model = QtGui.QFileSystemModel(self) model.setFilter(QtCore.QDir.Files) model.setNameFilters(['*.ma', '*.mb']) model.setNameFilterDisables(False) index = model.setRootPath('C:/Program Files/Autodesk/Maya2016.5/Examples/Modeling/Sculpting_Base_Meshes/Animals') mainLayout = QtGui.QVBoxLayout(self) view = QtGui.QTreeView(self) view.setModel(model) view.setRootIndex(index) mainLayout.addWidget(view) view.header().setStretchLastSection(False) view.header().setResizeMode(0, QtGui.QHeaderView.Stretch) view.header().setResizeMode(1, QtGui.QHeaderView.ResizeToContents) view.header().setResizeMode(2, QtGui.QHeaderView.ResizeToContents) view.header().setResizeMode(3, QtGui.QHeaderView.ResizeToContents)
実験!
上記のコードを実行してみると、一番右のカラムがストレッチしていたのが、ファイル名のカラムがストレッチするようになりました!(*´ω`*)b