def cellSize(self, leafIndex: QModelIndex, hv: QHeaderView, styleOptions: QStyleOptionHeader) -> QSize: res = QSize() variant = leafIndex.data(Qt.SizeHintRole) if variant: res = variant fnt = QFont(hv.font()) var = leafIndex.data(Qt.FontRole) if var: fnt = var fnt.setBold(True) fm = QFontMetrics(fnt) size = QSize( fm.size(0, leafIndex.data(Qt.DisplayRole)) + QSize(4, 0)) #WA: add more horizontal size (4px) if leafIndex.data(Qt.UserRole): size.transpose() decorationsSize = QSize(hv.style().sizeFromContents( QStyle.CT_HeaderSection, styleOptions, QSize(), hv)) emptyTextSize = QSize(fm.size(0, "")) return res.expandedTo(size + decorationsSize - emptyTextSize)