Seite 1 von 1

QTreeWidget -> Item Index von TopLevelItem und Child

Verfasst: 2. Oktober 2007 22:47
von nico123
Hallo,
ich habe ein QTree Widget mit folgendem aufbau:

+ Root1
|----Child1
|----Child2
|----Child3
+ Root2
|-----Child1
|-----Child2
+ Root3

usw...

Ich möchte jetzt wenn ein Root oder Child gewählt wird, dessen Index bekommen. Für die Roots ists ja nicht das Problem:

Code: Alles auswählen

 tree->indexOfTopLevelItem(current);
Ach, das ganze wird mit folgendem Signal verknüpft und steckt in dieser Funktion:

Code: Alles auswählen

connect(tree, SIGNAL(currentItemChanged( QTreeWidgetItem *,  QTreeWidgetItem *)), this, SLOT(changePage(QTreeWidgetItem *, QTreeWidgetItem*)));

/**********************************************************/

int RootIndexOfTree;
void MainWindowImpl::changePage(QTreeWidgetItem * current, QTreeWidgetItem* previous) {     
	RootIndexOfTree = tree->indexOfTopLevelItem(current));
} 
Also ich komme da einfach nicht so richtig weiter? Hat vllt. jemand von euch eine Idee, Tipp oder Lösungsansatz für mich? Wäre echt seht dankbar.

Schöne Grüße und vielen Dank,
Nico

Verfasst: 2. Oktober 2007 23:15
von dhcase

invisibleRootItem

Verfasst: 17. September 2009 16:19
von Exasperation
Da ich nur eine kurze Frage habe, möchte ich keinen extra Thread erstellen. Meine Frage bezieht sich auf das unsichtbare root Item, an dem der Rest des tree widgets aufgehängt ist... Wird ein solches Item automatisch erstellt? Als existiert das automatisch sobald ich meinem QTreeWidgets topLevelItems hinzufüge? Oder muss ich das manuell erstellen?

Die Sache ist die, dass ich eine Funktion, die durch mein QTreeWidget durchläuft, rekursiv aufrufen möchte und das geht nur wenn ich universell alle items über parent->child anspreche. Gibt es also schon ein unsichtbares parent für die topLevelItems oder muss ich selber ein root item erstellen, dass den restlichen Baum beinhaltet und das ich dann ausblende?

Verfasst: 18. September 2009 07:28
von nebler
Ich hab zZ viel mit QTreeWidget gemacht bzw. mit QTreeWidgetItem.

Dein unsichtbares Element gibts nicht ^^.

1 TopLevelElement == 1 Wurzelknoten

Wenn current->parent() == 0 dann ist der aktuelle Knoten ein Wurzelknoten und somit ein topLevelItem.

Davon geh ich aus und bis jetzt stimmen meine Algorithmen mit der Annahme :-)

Verfasst: 18. September 2009 10:04
von Exasperation
Ja oke danke ^^ Wollt nur sicher gehn dass ich das zusätzliche topLevelItem umsonst mache ;)