Ich versuche aktuell einen QTreeView mit Daten zu füttern, bei deren Darstellung ein QItemDelegate verwendet wird. Es existiert nur eine einzelne Column, jedes TopLevelItem hat exakt 1 Level an ChildItems, weiter geht die Hierarchie nicht.
Was ich nun gern erreichen will, ist dass der Delegate unterschiedliche Breiten der Items zulässt. Die Breite ist essentiell, da sie eine zeitliche Dauer repräsentiert und nicht skaliert dargestellt werden soll.
Wie im Bild dargestellt, sollen die ItemGroups der Breite des Views folgen, die SubItems aber fixe Breiten gemäß ihrer Daten besitzen. Ich hoffe die Zeichnung erläutert mein Vorhaben.
Probiert habe ich folgendes:
stretchLastSection des QHeaderView auf true/false, beides hat nicht die gewünschte Wirkung.
sizeHint im Delegate ist implementiert und gibt die gewünschte Breiten zurück, aber scheinbar werden diese ignoriert.
Das Snippet dazu sieht so aus ( sorry, kein Python ):
Code: Alles auswählen
int itemWidth = parentView_->width();
if (!isGroup)
{
{
itemWidth = duration * DATACELL_WIDTH;
}
}
return QSize(itemWidth, TRACK_HEIGHT);
Ich erreiche entweder, dass alle Items auf die Breite des Views gezeichnet werden, oder dass die Column manuell/interaktiv manipuliert werden muss. Bei letzterem konnte ich durch resizeSection des QHeaderView zwar die Column auf die gewünschte Länge bringen, aber damit werden auch alle anderen Items automatisch in ihrer Breite angepasst.
Ist mein Anliegen mit dem QTreeView/QItemDelegate überhaupt möglich? Selbst ein funktionierender Workaround würde mir erst ein mal helfen.
Vielleicht hat jemand eine Idee.
Falls noch was unklar ist, bitte einfach melden, ich erklär es gern im Detail.
Vielen Dank im Voraus,
~Mad