Treeview, QAbstractItemModel: column?

Alles rund um die Programmierung mit Qt
Antworten
dusti
Beiträge: 35
Registriert: 7. März 2009 14:24

Treeview, QAbstractItemModel: column?

Beitrag von dusti »

Ich arbeite mich gerade in Models udn Views ein. Dabei möchte ich ein Model für einen Treeview impelementieren, scheitere aber an dem Verständnis, wo in einem Treeview die columns versteckt sind. Entsprechen die columns der "Einrückungstiefe", also dem Level des Items?
Und was haben die horizontal nebeneinander angeordneten Kästchen auf dem folgenden Bild zu bedeuten? Ich dachte alle 3 Kästchen in bspw. row 1 gehören doch zum gleichen Item, oder nicht? Wieso steht dann in row2 das C nicht im ersten sondern im 2. Kästchen?
Bild
Das bild stammt aus http://doc.qt.nokia.com/latest/model-vi ... mming.html
Ich habe jetzt schon verschiedene Einführungen gelesen, aber ich kann mir die oben gestellten Fragen beim besten Willen nicht selber beantworten. Es wäre super, wenn mir das jemand etwas erläutern könnte!

Danke schonmal im Voraus, dusti
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Re: Treeview, QAbstractItemModel: column?

Beitrag von solarix »

dusti hat geschrieben:[...]Wieso steht dann in row2 das C nicht im ersten sondern im 2. Kästchen?[...]
Weil indexC im Beispielcode auf Spalte 1 abgefragt wird und indexA auf Spalte 0:

Code: Alles auswählen

 
 QModelIndex indexA = model->index(0, 0, QModelIndex());
 QModelIndex indexC = model->index(2, 1, QModelIndex());
hth..
dusti
Beiträge: 35
Registriert: 7. März 2009 14:24

Beitrag von dusti »

Aber was bedeutet das jetzt genau, dass "indexC im Beispielcode auf Spalte 1 abgefragt wird"? Wie kann das überhaupt in einer anderen Spalte sein? Ist das die Einrückungstiefe? Und was ist der Unterschied zwischen dem Kästchen mit dem C drin und dem links davon? Gehören die zum gleichen Item?
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Ja.. lass dich von "Index" und "Item" nicht verwirren.. Der Datenzugriff erfolgt halt (aus Sicht der View-Klasse) über Indexe, nicht über "Items".
Aber ein Item kann ja auf mehrere Indexe (Spalten) reagieren..

In der Qt-Doku wollten die Trolls nur den Zusammenhang zwischen "Index" und Inhalt (nicht Item) zeigen.
Also:
Wie kann das überhaupt in einer anderen Spalte sein?
Das Item besitzt ja mehrere Spalten:

Code: Alles auswählen

QVariant TreeItem::data(int column) const
 {
    switch (column) {
       case 0: return QVariant();
       case 1: return QVariant("C");
    }
     return QVariant();
 }
hth..
Antworten