Просто сделайте хинт ограниченным по ширине сверху и вуаля.
Мне хотелось бы сначала собрать всю информацию о ширине айтемов в нужных колонках, а потом уже, на основании ее, вычислить "оптимальные" размеры. Иначе что/как ограничивать? Может просто места "хватает на всех" или наоборот, только минимальный размер и возможен.
Нашел QAbstractItemView::sizeHintForColumn (virtual), лучшего ничего не видно. Придется наверное при его вызове для первой Stretch посчитать для всех. Ну хорошо, а как же считать? Просто "по максимуму" (как у великих троллей) может оказаться плохо если попадется длиннющая строка-урод. Да и обычно колонки есть менее и более важные