Seite 1 von 1

[gelöst] QTreeWidgetItem löschen

Verfasst: 15. September 2009 09:31
von Tom_Tom
Hi Leute, ich quäle mich seit ein paar Tagen mit dem Löschen von QTreeWidgetItem's rum.

Ich habe von QT ja nur die Möglichkeit mit takeChild, ein Kind-Element zu aus meinem QTreeWidget zu entfernen...

Code: Alles auswählen

	QTreeWidgetItem * item = this->ui.treeWidgetTitle->currentItem();

	QTreeWidgetItem * parentItem = item->parent();

	if (parentItem)
		parentItem->takeChild(0);

Aber was mache ich bei einem TopLevelItem? Weil dort gibt es dann kein Parent mehr.

Es gibt zwar takeTopLevelItem(), aber damit kann ich ihm ja leider nicht sagen, welchen TopLevelItem er nehmen soll, wenn ich mehrere habe.

Ich hoffe, es hat schon jemand Erfahrung damit oder eine Idee.

Verfasst: 15. September 2009 10:05
von Exasperation
aber damit kann ich ihm ja leider nicht sagen, welchen TopLevelItem er nehmen soll, wenn ich mehrere habe
Also in der Doku les ich dazu:
Removes the top-level item at the given index in the tree and returns it
Finde den index vom topLevelItem heraus (sollte nicht allzu schwer sein) und das entsprechende Item wird gelöscht.. habs nicht getestet, aber sollte doch funktionieren oder?

Verfasst: 15. September 2009 10:25
von Exasperation
So habs jetzt mal getestet...

Code: Alles auswählen

my_tree_widget->takeTopLevelItem( 2 );
Löscht wie gewollt das topLevelItem an dritter Stelle...

Klappts mittlerweile bei dir?

Verfasst: 15. September 2009 11:10
von Tom_Tom
Hey sorry, dass ich jetzt erst antworte.

Ich dachte immer bei QTreeWidget::takeTopLevelItem ( int index )
wäre mit index die Spalten-Nr. gemeint.

Danke dir nochmal für deine schnelle Hilfe =)

Hier nochmal mein Code, falls es noch jemand mal benötigt:

Code: Alles auswählen

	QTreeWidgetItem * item = this->ui.treeWidgetTitle->currentItem();
	QTreeWidgetItem * parentItem = item->parent();

	item->removeChild(new QTreeWidgetItem());

	if (parentItem) {
		parentItem->takeChild(0);
	}
	else {
		int index = this->ui.treeWidgetTitle->indexOfTopLevelItem(item);
		this->ui.treeWidgetTitle->takeTopLevelItem(index);
	}

Verfasst: 15. September 2009 11:15
von Exasperation
Ja klar kein Problem :)

Die Spalte im QTreeWidget wird in der Doku immer mit "column" angegeben ;)

Wär auch n bisschen doof wenn Qt für Children ne Löschfunktion anbieten würde, man aber für die topLevelItems nen Umweg machen müsste ;)

Bin grad selber an nem QTreeWidget dran das umfangreiche Funktionen erfüllen muss, deswegen ist mir das gleich eingefallen ;)

Gruß, Matze