Wpis z mikrobloga

Mirki, mam sobie QTableView z podpiętym QAbstractItemModel. Tabelka ładnie się wyświetla i składa się z kolumn:
Opis | Email | Data | Status

Chciałbym, żeby word wrap działał tylko dla kolumny Opis. Jeżeli jest w niej za dużo tekstu, to tekst ma się zawinąć a cały wiersz ma zwiększyć swoją wysokość. Jeżeli jest za dużo tekstu w innych kolumnach (a opis jest krótki) to nie mają się zawijać tylko wykropkować. Ktoś może mnie naprowadzić na trop, jak to najłatwiej zrobić?

#qt
  • 3
@wnocy: Tak mi na szybko do głowy przyszło:

- ustaw dla całego QTableView::setWordWrap(false)
- dla pierwszej(zerowej) kolumny ustaw sobie jakieś tekstowe widgety(np. QLabel) za pomocą QAbstractItemView::​setIndexWidget
- dla każdego z tych widgetów ustaw QLabel::setWordWrap(true)
- zmień rozmiar wierszy za pomocą QTableView::resizeRowsToContents()
i daj znać, czy zadziałało.

http://wklej.org/id/1698500/
@enceladus71: dzięki za sugestię. Niestety setIndexWidget mi nie działa. W ogóle QTableView.indexWidget() nie jest wołane - wypełniłem tę metodkę w klasie dziedziczącej i ani razu się na breakpoincie nie zatrzymałem. W wolnej chwili to przetestuje na wyizolowanym przypadku, bo to dosyć dziwne zachowanie.

Zrobiłem to inaczej:
- Tak jak mówiłeś QTableView.setWordWrap(False)
- Ustawiam mojego delegata dla całej kolumny QTableView.setItemDelegateForColumn(col, DescDelegate(self))
- DescDelegate jest w linku, ale generalnie chodzi o to, że