QTreeWidget, Spaltenbreite automatisch anpassen

Alles rund um die Programmierung mit Qt
Antworten
osiris81
Beiträge: 19
Registriert: 23. Juli 2008 14:10

QTreeWidget, Spaltenbreite automatisch anpassen

Beitrag 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
osiris81
Beiträge: 19
Registriert: 23. Juli 2008 14:10

Beitrag 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....
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag 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.
osiris81
Beiträge: 19
Registriert: 23. Juli 2008 14:10

Beitrag 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.
Antworten