How to set column size individually?
from PySide2 import QtCore, QtWidgets
class Project:
def __init__(self, id, project_name):
self.id = id
self.name = project_name
self.maya = ''
self.description = ''
class TableModel(QtCore.QAbstractTableModel):
def __init__(self, data, parent=None):
QtCore.QAbstractTableModel.__init__(self, parent)
self._data = data
self.header = ['ID', 'Name']
def headerData(self, col, orientation, role):
if orientation == QtCore.Qt.Horizontal and role == QtCore.Qt.DisplayRole:
return self.header[col]
def rowCount(self, parent):
return len(self._data)
def columnCount(self, parent):
return 2
def data(self, index, role):
if not index.isValid():
return
row = index.row()
column = index.column()
if role == QtCore.Qt.DisplayRole:
if column == 0:
return self._data[row].id
elif column == 1:
return self._data[row].name
app = QtWidgets.QApplication([])
table = QtWidgets.QTableView()
table.verticalHeader().hide()
table.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)
data = [Project(0, 'Project_A'), Project(1, 'Project_B')]
table_model = TableModel(data)
table.setModel(table_model)
table.show()
app.exec_()
Here ResizeToContent
set size of both columns, I need to set this property for the first column only and scond to Stretch
. I tryed:
table.horizontalHeader().setSectionResizeMode(0, QtWidgets.QHeaderView.ResizeToContents)
table.horizontalHeader().setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
But this code does not work, application crashes. Maybe there is a way to define size in pixel/percents?