[gelöst] Element aus QStringList entfernen - Wie?

Alles rund um die Programmierung mit Qt
Saiyaman
Beiträge: 111
Registriert: 20. Mai 2005 13:52

[gelöst] Element aus QStringList entfernen - Wie?

Beitrag von Saiyaman »

Code: Alles auswählen

itsLocalPathList.erase(itsLocalPathList.begin() + i);
Warum geht der Code nich? i ist unsigned int und itsLocalPathList ist QStringList.

MfG
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Re: Element aus QStringList entfernen - Wie?

Beitrag von macman »

itsLocalPathList.begin() liefert einen Zeiger und mit dem +i setzt Du den Zeiger höchstwahrscheinlich ins Nirwana.

Wenn Dir der String bekannt ist, nimm remove(QString(myString)). Ansonsten mit dem Iterator durch steppen, bis Du beim Richtigen bist.

Code: Alles auswählen

	QStringList::Iterator it = myStringList.begin();
	while (it != myStringList.end()) 
	{
		if (remove)
			it = myStringList.remove(it);
		else
			++it;
	}
Statt remove() kannst Du auch erase() nehmen.[/code]
Zuletzt geändert von macman am 15. Juni 2005 14:52, insgesamt 1-mal geändert.
Saiyaman
Beiträge: 111
Registriert: 20. Mai 2005 13:52

Beitrag von Saiyaman »

Wieso sollte der einen Zeiger liefern? Der liefert einen Iterator und i zählt weiter. Mit normalen Vectorlisten klappt das prima.

MfG
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Dann solltest Du vielleicht mal erklären was nicht funktioniert. Welche Fehlermeldung kommt? Bist Du sicher das i noch innerhalb der Stringlist ist?
Saiyaman
Beiträge: 111
Registriert: 20. Mai 2005 13:52

Beitrag von Saiyaman »



Kompilieren...
***.cpp
***.cpp(124) : error C2678: Binärer Operator '+': Es konnte kein Operator gefunden werden, der einen linksseitigen Operator vom Typ 'QValueList::iterator' akzeptiert (oder keine geeignete Konvertierung möglich)
with
[
T=QString
]
MfG
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Saiyaman hat geschrieben:


Kompilieren...
***.cpp
***.cpp(124) : error C2678: Binärer Operator '+': Es konnte kein Operator gefunden werden, der einen linksseitigen Operator vom Typ 'QValueList::iterator' akzeptiert (oder keine geeignete Konvertierung möglich)
with
[
T=QString
]
MfG
Dann steht doch die Erklärung da.

Im übrigen bleibe ich dabei das ein Iterator ein Zeiger ist, oder wie erklärst Du sonst das hier:

Code: Alles auswählen

QStringList::Iterator it = myStringList.begin();
   while (it != myStringList.end())
   {
      QString text = *it;
      ++it;
   } 
Saiyaman
Beiträge: 111
Registriert: 20. Mai 2005 13:52

Beitrag von Saiyaman »

Mir ist die Position bekannt, nicht der String.

MfG :-/
Saiyaman
Beiträge: 111
Registriert: 20. Mai 2005 13:52

Beitrag von Saiyaman »

Code: Alles auswählen

			QStringList::iterator it = itsLocalPathList.begin();
			it += i;
			itsLocalPathList.remove(it);
Ich pack das nich. Warum geht das nun so und nich so?

Code: Alles auswählen

itsLocalPathList.remove(itsLocalPathList.begin() + i);
MfG
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Saiyaman hat geschrieben:Mir ist die Position bekannt, nicht der String.
Ist dir auch die Doku bekannt? Öffne mal den Assistenten, gib beim Index 'QStringList' ein, dann auf 'List of all member function' und was sehen wir als 3. Eintrag?

myStringList.at(int) ist genau das was Du haben willst. Ich habe es noch nicht gebraucht, aber es hat mich nicht mal ne Minute gekostet es zu finden. Die Qt Doku ist sehr gut und die Jungs von Trolltech können denken. Hätte mich sehr gewundert, wenn es etwas in der Art nicht gegeben hätte.

Seh es nicht als Kritik, wahrscheinlich waren nur zuviele Bäume da :-)
Saiyaman
Beiträge: 111
Registriert: 20. Mai 2005 13:52

Beitrag von Saiyaman »

Ich kenne die Doku und habe diese Sektion über QStringList gut studiert. Aber eine "einfache" Möglichkeit scheint es eben einfach nicht zu geben ;)

Najo, Problem gelöst :)

MfG
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

list.remove( list.at( deineId ) );

DAS WOLLTE ER DAMIT SAGEN!!!

Und du bist WIRKLICH so ein Kandidat, der anscheinend nicht lesen kann. Das sieht man an all deinen Posts.
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

cool bleiben :)
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Hehe. Natürlich.
Saiyaman
Beiträge: 111
Registriert: 20. Mai 2005 13:52

Beitrag von Saiyaman »

@FlorianBecker

Du hast ne PN ...

Edit: Im Übrigen möchte ich nicht einfach nur Lösungen abtippen, sondern auch verstehen, warum etwas so ist :P
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Ja, wie wäre denn eine Frage ala:

Hallo,

ich möchte verstehen, wie die QValueList Klasse arbeitet, bisher bin ich desöftern bei solchen Dingen wie remove gescheitert. Ich habe hier ein wenig Code:

CODE

Aber es funktioniert nicht, selbst mit qDebug kommt nicht der richtig Wert heraus. Hier ist die Ausgabe von qDebug incl. dem Code:

ZEUG

usw.

Dann würde es solche Diskussionen hier gar nicht erst geben.
Antworten