QTreeViewのヘッダの幅をいい感じにする方法!!




takkun
どうも!たっくんです

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