QTreeWidget-Spalten an Gesamtinhalt anpassen (Qt4)
QTreeWidget-Spalten an Gesamtinhalt anpassen (Qt4)
Hallo, habe nur resizeColumnToContents() gefunden, das berücksichtigt allerdings nur aktuell sichtbare Elemente.
Ein manueller Durchlauf der top-level-items würde auch noch gehen da ich das widget als nicht-hierarchische liste benutze, allerdings kenne ich keine funktion um die optimale breite eines QTreeWidgetItem's zu bekommen, sizeHint() liefert nur -1.
Ein manueller Durchlauf der top-level-items würde auch noch gehen da ich das widget als nicht-hierarchische liste benutze, allerdings kenne ich keine funktion um die optimale breite eines QTreeWidgetItem's zu bekommen, sizeHint() liefert nur -1.
Geht auch zu QTreeView http://www.qtforum.de/forum/viewtopic.php?t=2149 einfach die kolonnen breite...
Sorry, aber versteh nich ganz was du mir damit sagen willst, finde in dem thread jedenfalls keine lösung zu meinem problem.
Ich möchte einfach nur die breite einer QTreeWidget-spalte automatisch an den inhalt anpassen, so wie QTreeView::resizeColumnToContents( int ), nur dass halt alle Zeilen berücksichtigt werden und nicht nur die aktuell sichtbaren.
Hoffe jemand kann mir da helfen, danke!
Ich möchte einfach nur die breite einer QTreeWidget-spalte automatisch an den inhalt anpassen, so wie QTreeView::resizeColumnToContents( int ), nur dass halt alle Zeilen berücksichtigt werden und nicht nur die aktuell sichtbaren.
Hoffe jemand kann mir da helfen, danke!
Dann durchlaufe alle zeilen mit dem resizeColumnToContents(int)
nicht nur die erste .... nach dem setzen vom text...
oder die breite herausfinden und die differenz hinzufuegen was bleibt ..
und den miniumu size setzen...
Ich mache so was mit expanding im designer ui file ... als platzhalter die space horizzontal fixed mit dem wert... wen ein element noch leer ist...
nicht nur die erste .... nach dem setzen vom text...
oder die breite herausfinden und die differenz hinzufuegen was bleibt ..
und den miniumu size setzen...
Ich mache so was mit expanding im designer ui file ... als platzhalter die space horizzontal fixed mit dem wert... wen ein element noch leer ist...
qt-designer? ich will nicht die qtreewidget-größe ändern sondern die einzelnen spaltenbreiten in dem widget. das ist ja kein problem mit QTreeView::header()->resizeSection( int, int ). dazu muss ich aber wissen, wie breit das größte listitem in der jeweiligen spalte ist (abhängig vom text). resizeColumnToContents justiert zwar die spaltenbreite, der bezieht aber nur akutell vom user sichtbare einträge ein.
hast es doch nicht gelesen ... nochmals ... http://www.qtforum.de/forum/viewtopic.php?t=2149 columbreite....
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
patrik08, ich will nicht die aktuellen größen/positionsinformationen abrufen, sondern eine berechnete breitenangabe, abhängig vom inhalt (text) der einzelnen items.
Die funktion soll so sein wie bei einem doppelklick zwischen 2 spaltenüberschriften in einem windows-listview control, report mode.
FlorianBecker, danke, funktioniert aber nicht immer:
Es funktioniert nur, solange vertikal alle einträge "reinpassen".
Sobald das widget mehr zeilen hat als dargestellt werden können, nimmt die spaltenbreite (ausgehend von der optimalen breite), immer weiter ab. Auch wenn die zeilenanzahl gleich bleibt, tritt das phänomen auf wenn das widget vertikal verkleinert wird (und die zeilen neu geschrieben werden). Also je länger die liste außerhalb des sichtbereiches, desto kleiner werden die spalten, sehr merkwürdig.
Außerdem sollen die Spalten weiterhin vom Benutzer verändert werden können (QHeaderView::Interactive ist also vorraussetzung).
Das alles ist kein ungewöhnlicher spezialfall was ich hier fordere, das ist das ganz normale verhalten von windows-listen-steuerelementen.
Bin dankbar für weitere hinweise!!
Die funktion soll so sein wie bei einem doppelklick zwischen 2 spaltenüberschriften in einem windows-listview control, report mode.
FlorianBecker, danke, funktioniert aber nicht immer:
Code: Alles auswählen
<tree widget>->header()->setStretchLastSection( false );
<tree widget>->header()->setResizeMode( QHeaderView::Custom );Sobald das widget mehr zeilen hat als dargestellt werden können, nimmt die spaltenbreite (ausgehend von der optimalen breite), immer weiter ab. Auch wenn die zeilenanzahl gleich bleibt, tritt das phänomen auf wenn das widget vertikal verkleinert wird (und die zeilen neu geschrieben werden). Also je länger die liste außerhalb des sichtbereiches, desto kleiner werden die spalten, sehr merkwürdig.
Außerdem sollen die Spalten weiterhin vom Benutzer verändert werden können (QHeaderView::Interactive ist also vorraussetzung).
Das alles ist kein ungewöhnlicher spezialfall was ich hier fordere, das ist das ganz normale verhalten von windows-listen-steuerelementen.
Bin dankbar für weitere hinweise!!