[gelöst] QTreeWidgetItem löschen

Alles rund um die Programmierung mit Qt
Antworten
Tom_Tom
Beiträge: 54
Registriert: 2. August 2008 18:39

[gelöst] QTreeWidgetItem löschen

Beitrag 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.
Zuletzt geändert von Tom_Tom am 15. September 2009 11:12, insgesamt 1-mal geändert.
Exasperation
Beiträge: 186
Registriert: 11. März 2009 18:00
Wohnort: VS

Beitrag 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?
Exasperation
Beiträge: 186
Registriert: 11. März 2009 18:00
Wohnort: VS

Beitrag 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?
Tom_Tom
Beiträge: 54
Registriert: 2. August 2008 18:39

Beitrag 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);
	}
Exasperation
Beiträge: 186
Registriert: 11. März 2009 18:00
Wohnort: VS

Beitrag 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
Antworten