Auf dieser Seite

QtTaskTree::Iterator Class

class QtTaskTree::Iterator

Basisklasse, die als Iterator innerhalb des „For element“-Elements verwendet werden soll. Mehr...

Header: #include <qtasktree.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS TaskTree)
target_link_libraries(mytarget PRIVATE Qt6::TaskTree)
qmake: QT += tasktree
Seit: Qt 6.11
Nachfolger:

QtTaskTree::ForeverIterator, QtTaskTree::ListIterator, QtTaskTree::RepeatIterator und QtTaskTree::UntilIterator

Status: Technologievorschau

Diese Klasse befindet sich in der Technologievorschau und kann sich noch ändern.

Hinweis: Alle Funktionen in dieser Klasse sind reentrant.

Öffentliche Funktionen

Iterator(QtTaskTree::Iterator &&other)
qsizetype iteration() const

Ausführliche Beschreibung

Siehe auch „ For“ , „ ForeverIterator “, „ RepeatIterator “, „ UntilIterator “ und „ ListIterator “.

Dokumentation zu den Mitgliedsfunktionen

[constexpr noexcept default] Iterator::Iterator(QtTaskTree::Iterator &&other)

Erstellt eine Instanz von „ Iterator “ mithilfe von „Move“.

qsizetype Iterator::iteration() const

Gibt den Iterationsindex des aktuell ausgeführten Handlers innerhalb eines „ Do “-Körpers des Konstrukts „ For “ (Iterator) >> „ “ zurück. Verwenden Sie diese Funktion ausschließlich innerhalb des Handler-Körpers eines beliebigen „ GroupItem “-Elements, das im „ Do “-Körper des Rezepts platziert ist; andernfalls ist mit einem Absturz zu rechnen. Stellen Sie sicher, dass „ Iterator “ an das „ For “-Element übergeben wird.

Anwendungsbeispiel:

const QList<std::chrono::seconds> timeouts = { 5s, 1s, 3s };
const ListIterator iterator(timeouts);

const auto onSetup = [iterator](std::chrono::milliseconds &timeout) {
    timeout = *iterator;
    qDebug() << "Starting" << iterator.iteration() << "iteration with timeout"
            << *iterator << "Sekunden.";
};
const auto onDone = [iterator] {
    qDebug() << "Finished" << iterator.iteration() << "iteration with timeout"
            << *iterator <<  „Sekunden.“;
};

const Group sequentialRecipe = For(iterator) >> Do {
    QTimeoutTask(onSetup, onDone)
};

const Group parallelRecipe = For(iterator) >> Do {
    parallel,
    QTimeoutTask(onSetup, onDone)
};

Die Ausgabe bei Ausführung von ` sequentialRecipe ` lautet:

Starting 0 iteration with timeout 5s seconds.
Finished 0 iteration with timeout 5s seconds.
Starting 1 iteration with timeout 1s seconds.
Finished 1 iteration with timeout 1s seconds.
Starting 2 iteration with timeout 3s seconds.
Finished 2 iteration with timeout 3s seconds.

Im sequenziellen Modus wird garantiert, dass die Reihenfolge der Iterationsindizes in den `done`-Handlern beibehalten wird.

Die Ausgabe bei Ausführung von ` parallelRecipe ` lautet:

Starting 0 iteration with timeout 5s seconds.
Starting 1 iteration with timeout 1s seconds.
Starting 2 iteration with timeout 3s seconds.
Finished 1 iteration with timeout 1s seconds.
Finished 2 iteration with timeout 3s seconds.
Finished 0 iteration with timeout 5s seconds.

Im parallelen Modus ist die Beibehaltung der Reihenfolge der Iterationsindizes in den „done“-Handlern nicht garantiert und hängt von der Reihenfolge der abgeschlossenen Aufgaben ab. Der im „done“-Handler des parallelen „ Do “-Körpers zurückgegebene Iterationsindex entspricht dem Index der ursprünglichen Iteration für den entsprechenden „setup“-Handler, sodass die Reihenfolge der Iterationsindizes in den nachfolgenden „done“-Handlern möglicherweise nicht aufsteigend ist.

© 2026 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.