Seite 1 von 1

[gelöst]QListWidget - Item löschen?

Verfasst: 18. April 2006 22:49
von Klaue
Hallo zusammen

OK, das ist höchstwahrscheinlich ziemlich Trivial, aber ich kriegs nicht hin. Ich tu dem User in einem ListWidget eine Namensliste (von Künstlern) anzeigen. alles was ich möchte, ist, dass es, wenn er einen Künstler angeklickt (=markiert) hat und dann auf den Lösch-Button klickt, diesen Zeichner aus der Liste löscht.
Aber ich krieg es einfach nicht hin. Ich hab schon ziemlich viel ausprobiert.. Was bis jetzt noch am Besten funktioniert hat ist das folgende:

Code: Alles auswählen

void MyProg::deleteFromList() {
	if (lwArtists->currentItem() != NULL) {
		vector<QString> vTemp;
		for (unsigned int i = 0; i < vArtists.size(); ++i) { // in dem vector ist dasselbe wie in der list
			if (vArtists[i] != lwArtists->currentItem()->text()) {
				vTemp.push_back(vArtists[i]);
			}
		}
		vArtists.clear();
		for (unsigned int i = 0; i < vTemp.size(); ++i) {
			vArtists.push_back(vArtists[i]);
		}
		
		lwArtists->clear();
		for (unsigned int i = 0; i < vArtists.size(); ++i) {
			lwArtists->addItem(vArtists[i]);
		}
	}
}
Wobei lwArtists das QListWidget ist. der Stringvector vArtists ist nur dort, weil ich lieber mit Vektoren arbeite als mit dieser Liste, die nur da ist, um dem User leichten zugriff zu gewähren.

Das einzige, was dieser Code aber schafft, ist, dass das letzte hinzugefügte Element wieder rausgelöscht wird, nicht aber das, das der User markiert hat.

Ich könnte mir vorstellen, dass die Lösung ziemlich einfach ist, aber ich komm einfach nicht drauf. Hoffentlich kann mir jemand helfen.

Verfasst: 18. April 2006 22:58
von ChMaster
servus,

hier ein kleine bsp:

Code: Alles auswählen

QListWidgetItem *item = listwidget->currentItem();

if( item == NULL )
   return;

delete item;

Verfasst: 19. April 2006 00:35
von Klaue
Danke vielmals, hat super geklappt!