2017-02-25 3 views
0

In meinem Layout scheinen meine dynamisch generierten QTableViews so skaliert zu werden, dass nur eine Zeile angezeigt wird. Ich möchte, dass der Container der Tabellenansichten eine Bildlaufleiste anstelle der einzelnen Tabellenansichten enthält, die den vollständigen Inhalt anzeigen sollen.Wie passe ich eine QTableView-Höhe an den Inhalt an?

Antwort

1

Qt hat anscheinend nichts dafür eingebaut, Sie müssen die Größe manuell berechnen und einstellen.

Dies ist, wie ich es für vertikale Größe (Qt 5.8) mache. Vielleicht möchten Sie setMaximumHeight/width hinzufügen.

Um es weiter zu entwickeln, sollte es auf das Vorhandensein einer horizontalen Bildlaufleiste prüfen, bevor Sie das zu der Größe hinzufügen. Dies reicht jedoch für meine Verwendung aus.

void verticalResizeTableViewToContents(QTableView *tableView) 
{ 
    int count=tableView->verticalHeader()->count(); 
    int scrollBarHeight=tableView->horizontalScrollBar()->height(); 
    int horizontalHeaderHeight=tableView->horizontalHeader()->height(); 
    int rowTotalHeight=0; 
    for (int i = 0; i < count; ++i) { 
     rowTotalHeight+=tableView->verticalHeader()->sectionSize(i); 
    } 
    tableView->setMinimumHeight(horizontalHeaderHeight+rowTotalHeight+scrollBarHeight); 
} 
Verwandte Themen