QtTaskTree::Iterator Class
class QtTaskTree::IteratorBasisklasse, 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
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.