Seite 1 von 2
[gelöst] Element aus QStringList entfernen - Wie?
Verfasst: 15. Juni 2005 13:43
von Saiyaman
Warum geht der Code nich? i ist unsigned int und itsLocalPathList ist QStringList.
MfG
Re: Element aus QStringList entfernen - Wie?
Verfasst: 15. Juni 2005 14:22
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]
Verfasst: 15. Juni 2005 14:51
von Saiyaman
Wieso sollte der einen Zeiger liefern? Der liefert einen Iterator und i zählt weiter. Mit normalen Vectorlisten klappt das prima.
MfG
Verfasst: 15. Juni 2005 15:03
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?
Verfasst: 15. Juni 2005 15:42
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
Verfasst: 15. Juni 2005 15:55
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;
}
Verfasst: 16. Juni 2005 09:32
von Saiyaman
Mir ist die Position bekannt, nicht der String.
MfG :-/
Verfasst: 16. Juni 2005 09:36
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
Verfasst: 16. Juni 2005 09:52
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

Verfasst: 16. Juni 2005 20:21
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
Verfasst: 16. Juni 2005 22:34
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.
Verfasst: 17. Juni 2005 11:12
von lepsai
cool bleiben

Verfasst: 17. Juni 2005 11:13
von FlorianBecker
Hehe. Natürlich.
Verfasst: 17. Juni 2005 11:34
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

Verfasst: 17. Juni 2005 11:42
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.