2016-04-12 17 views
0

Ich habe ein QTreeView mit einem Element baseItem, das sich einige Kinder enthält:alle Teilelemente eines Elements in QTreeView

baseItem 
    - child1 
    - child2 
    - child3 

Jetzt möchte ich alle Kinder dieses Artikels löschen, aber nicht der Gegenstand selbst. Mein aktueller Ansatz ist

if (baseItem->hasChildren()) 
    baseItem->removeRows(rowCnt,baseItem->rowCount()); 

zu nennen ... wo rowcnt ist die Zeilenindexnummer, wo baseItem an befindet. Leider funktioniert das nur, wenn baseItem auf rowCnt = 0 steht. Was könnte hier falsch sein? Wie sonst sollte ich alle Kinder von baseItem löschen?

Danke!

+1

Mögliches Duplikat von [Wie alle Zeilen und Kind Reihen von QTreeview entfernen] (http://stackoverflow.com/questions/7056529/how-to-remove-all-rows-and-child -rows-from-qtreeview) – IAmInPLS

+0

Alexis P .: Nein, dieser Thread beschreibt, wie man den kompletten Baum löscht. Ich möchte nur Kinder eines bestimmten Elements im Baum entfernen, während dieses Element und alle anderen am Leben bleiben – Elmi

+0

Ist baseItem-> parent() -> removeRows (baseItem-> row(), baseItem-> rowCount()); Arbeit? kann es nicht testen ... –

Antwort

1

... wobei rowCnt die Zeilenindexnummer ist, unter der sich baseItem befindet.

Nein, rowCnt ist der Index im Teilbaum unter dem übergeordneten Element. Also:

if (baseItem->hasChildren()) 
    baseItem->removeRows(0,baseItem->rowCount()); 
+0

Das war's - danke! :-) – Elmi