Использую наследника QTreeWidget для отображения сложного дерева с несколькими колонками. Чтобы были переносы строк в ячейках, используется sizeHint в QTreeWidgetItem, который вычисляется примерно вот так:
int height = QFontMetrics(font()).boundingRect(0, 0, columnWidth, 5000, Qt::AlignLeft | Qt::TextWordWrap, text);