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
0
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) :]