Seite 1 von 1

QTreeWidget, Spaltenbreite automatisch anpassen

Verfasst: 18. August 2008 09:26
von osiris81
Erstmal ein Hallo an alle :)

Zum Problem: Ich benutze ein QTreeWidget und möchte die Spaltenbreite gerne so haben, dass immer der minimal erforderliche Platz gebraucht wird. Hört sich einfach an, ich bekomm's aber nicht hin!

Ich möchte dies gerne einstellen, nachdem ich den Header mittels setHeaderItem(...) erstellt habe und nicht jedesmal wenn ich ein item entfernt/hinzugefügt habe. Den Header kann ich mittels setResizeMode wie folgt einstellen:

Interactive
Stretch
Custom

Ich muss Qt 4.1 verwenden, somit habe ich kein ResizeToContents zur Auswahl...
Damit kann ich es leider nicht einstellen.

Ich habe auch versucht, mittels QTreeWidget::resizeColumnToContents(int) die Spaltenbreite einzustellen (also unmittelbar nachdem der Header gesetzt wurde, noch ohne Inhalt), aber auch das ohne Erfolg.

Jemand noch eine Idee? (habe bereits überall gesucht und nichts gefunden)

Gruss

Verfasst: 18. August 2008 10:02
von osiris81
Noch etwas:

Wenn ich nach dem Setzen des Headers QHeaderView::setResizeMode(QHeaderView::Custom) aufrufe, dann haben alle Spalten die minimale Breite.

Wenn ich dann jedoch ein Item einfüge, wird die Spalte nicht automatisch vergrössert falls erforderlich....

Verfasst: 18. August 2008 15:43
von CaptnChaos
Du musst den ResizeMode auf Custom setzen. Dann musst du die Breite der Columns per Hand verwalten.
Ich habs noch nie gemacht aber ich denke mal

Code: Alles auswählen

void QHeaderView::resizeSection ( int logicalIndex, int size )
ist dafür das richtige.

Verfasst: 19. August 2008 09:41
von osiris81
-hallo KernelPanic:

Danke für Deine Antwort!

Nur: Dann müsste ich jedesmal, wenn ein neues item eingefügt wird, die Breite aller Spalten überprüfen und manuell setzen!?

Ich habe es momentan so gelöst, dass ich nach jedem Hinzufügen oder Entfernen eines items jede Spaltenbreite automatisch anpasse mittels QTreeWidget::resizeColumnToContents(int)

Sieht nach unnötiger Verschwendung von Rechenleistung aus, aber etwas anderes habe ich nicht gefunden... auf jeden Fall funktioniert's.