QListIterator Class

template <typename T> class QListIterator

Die Klasse QListIterator bietet einen Const-Iterator im Java-Stil für QList und QQueue. Mehr...

Kopfzeile: #include <QListIterator>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Öffentliche Funktionen

QListIterator(const QList<T> &list)
bool findNext(const T &value)
bool findPrevious(const T &value)
bool hasNext() const
bool hasPrevious() const
const T &next()
const T &peekNext() const
const T &peekPrevious() const
const T &previous()
void toBack()
void toFront()
QListIterator<T> &operator=(const QList<T> &list)

Detaillierte Beschreibung

QList hat sowohl Iteratoren im Java-Stil als auch Iteratoren im STL-Stil. Iteratoren im STL-Stil sind effizienter und sollten bevorzugt werden.

Eine Alternative zur Verwendung von Iteratoren ist die Verwendung von Indexpositionen. Die meisten Mitgliederfunktionen von QList nehmen einen Index als ersten Parameter an, so dass es möglich ist, auf Elemente zuzugreifen, sie zu ändern und zu entfernen, ohne Iteratoren zu verwenden.

QListIterator<T> erlaubt es, über eine QList<T>, eine QQueue<T> oder eine QStack<T> zu iterieren. Wenn Sie die Liste während der Iteration ändern wollen, verwenden Sie stattdessen QMutableListIterator<T>.

Der QListIterator-Konstruktor nimmt ein QList als Argument. Nach der Konstruktion befindet sich der Iterator ganz am Anfang der Liste (vor dem ersten Element). Im Folgenden wird beschrieben, wie man alle Elemente der Reihe nach durchläuft:

QList<float> list;
...
QListIterator<float> i(list);
while (i.hasNext())
    float f = i.next();

Die Funktion next() gibt das nächste Element in der Liste zurück und schaltet den Iterator weiter. Im Gegensatz zu Iteratoren im STL-Stil zeigen Iteratoren im Java-Stil zwischen den Elementen und nicht direkt auf die Elemente. Der erste Aufruf von next() verschiebt den Iterator an die Position zwischen dem ersten und dem zweiten Element und gibt das erste Element zurück; der zweite Aufruf von next() verschiebt den Iterator an die Position zwischen dem zweiten und dem dritten Element und gibt das zweite Element zurück, usw.

So können Sie in umgekehrter Reihenfolge über die Elemente iterieren:

QListIterator<float> i(list);
i.toBack();
while (i.hasPrevious())
    float f = i.previous();

Wenn Sie alle Vorkommen eines bestimmten Wertes finden wollen, verwenden Sie findNext() oder findPrevious() in einer Schleife.

Mehrere Iteratoren können auf dieselbe Liste angewendet werden. Wenn die Liste verändert wird, während ein QListIterator aktiv ist, iteriert der QListIterator weiter über die ursprüngliche Liste und ignoriert die veränderte Kopie.

Siehe auch QMutableListIterator und QList::const_iterator.

Dokumentation der Mitgliedsfunktionen

QListIterator::QListIterator(const QList<T> &list)

Konstruiert einen Iterator zum Durchlaufen von list. Der Iterator wird so gesetzt, dass er am Anfang der Liste steht (vor dem ersten Element).

Siehe auch operator=().

QListIterator<T> &QListIterator::operator=(const QList<T> &list)

Lässt den Iterator auf list arbeiten. Der Iterator wird so eingestellt, dass er am Anfang der Liste steht (vor dem ersten Element).

Siehe auch toFront() und toBack().

void QListIterator::toFront()

Verschiebt den Iterator an den Anfang des Containers (vor das erste Element).

Siehe auch toBack() und next().

void QListIterator::toBack()

Verschiebt den Iterator an das Ende des Containers (nach dem letzten Element).

Siehe auch toFront() und previous().

bool QListIterator::hasNext() const

Gibt true zurück, wenn sich mindestens ein Element vor dem Iterator befindet, d. h. der Iterator steht nicht am Ende des Containers; andernfalls wird false zurückgegeben.

Siehe auch hasPrevious() und next().

bool QListIterator::hasPrevious() const

Gibt true zurück, wenn sich mindestens ein Element hinter dem Iterator befindet, d. h. der Iterator steht nicht am Anfang des Containers; andernfalls wird false zurückgegeben.

Siehe auch hasNext() und previous().

bool QListIterator::findNext(const T &value)

Sucht ab der aktuellen Iteratorposition vorwärts nach value. Gibt true zurück, wenn value gefunden wird; andernfalls false.

Nach dem Aufruf wird der Iterator, falls value gefunden wurde, direkt nach dem passenden Element positioniert; andernfalls wird der Iterator am Ende des Containers positioniert.

Siehe auch findPrevious().

bool QListIterator::findPrevious(const T &value)

Sucht ab der aktuellen Iteratorposition rückwärts nach value. Gibt true zurück, wenn value gefunden wird; andernfalls wird false zurückgegeben.

Nach dem Aufruf wird der Iterator, falls value gefunden wurde, unmittelbar vor dem passenden Element positioniert; andernfalls wird der Iterator an den Anfang des Containers gesetzt.

Siehe auch findNext().

const T &QListIterator::next()

Gibt das nächste Element zurück und rückt den Iterator um eine Position vor.

Der Aufruf dieser Funktion bei einem Iterator, der sich am Ende des Containers befindet, führt zu undefinierten Ergebnissen.

Siehe auch hasNext(), peekNext(), und previous().

const T &QListIterator::peekNext() const

Gibt das nächste Element zurück, ohne den Iterator zu verschieben.

Der Aufruf dieser Funktion bei einem Iterator, der sich am Ende des Containers befindet, führt zu undefinierten Ergebnissen.

Siehe auch hasNext(), next(), und peekPrevious().

const T &QListIterator::peekPrevious() const

Gibt das vorherige Element zurück, ohne den Iterator zu verschieben.

Der Aufruf dieser Funktion bei einem Iterator, der sich am Anfang des Containers befindet, führt zu undefinierten Ergebnissen.

Siehe auch hasPrevious(), previous(), und peekNext().

const T &QListIterator::previous()

Gibt das vorherige Element zurück und verschiebt den Iterator um eine Position zurück.

Der Aufruf dieser Funktion bei einem Iterator, der sich am Anfang des Containers befindet, führt zu undefinierten Ergebnissen.

Siehe auch hasPrevious(), peekPrevious(), und next().

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.