Automatyczna zmiana szerokości kolumn

0

Mam problem a mianowicie mam QTreeView jak w załączniku i chciałbym zrobić aby rozmiary szerokości kolumn same się dopasowywały podczas rozciągania okna z tym, że 1 i 3(ostatnia) kolumna mają zawsze taki sam rozmiar a poszerza się tylko środkowa część, no i nie mam planu jak to zrobić :D

1

Toć to żadna filozofia...ot reimplementacja resizeEventu widoku.Jedyny myk jaki należy znać to pobieranie szerokości dostępnego miejsca-robi się to poprzez viewport()->width().Mając tą wielkość bez problemu wyliczasz sobie szerokość poszczególnych kolumn wg jakowyś ustaleń,a ustawisz ją starym,poczciwym setColumnWidth().Ot na przykład:

void YourView::resizeEvent(QResizeEvent *e)
{
   QTableView::resizeEvent(e);//zakładając,że twój widok od tabeli pochodzi
   int w=viewport()->width();//a ta sztuczka jest istotna o tyle,że uwzględnia wszelakie scroll bary i headery widoku
   int c1=w/2;//przyjmijmy,że chcemy aby 1 kolumna zabierała połowę dostępnego miejsca
   int c2=w/4;//2 kolumna ma mieć 1/4 szerokości widoku
   int c3=w-c1-c2;//pozostałe miejsce przydziel tej
   setColumnWidth(0,c1);
   setColumnWidth(1,c2);
   setColumnWidth(2,c3);
}

EDIT:
Poczekaj moment,bo skoro 2 kolumny mają stały rozmiar to winno dać się jeszcze prościej,ale muszę w dokumentację zerknąć.

EDIT2:
No i już wiadomo.
Odpowiedzią na zagadkę jest QHeaderView::setResizeMode() wraz z enumem ResizeMode (polubisz zwłaszcza Fixed i Stretch) :]

1 użytkowników online, w tym zalogowanych: 0, gości: 1