QtTaskTree::Iterator Class
class QtTaskTree::IteratorBasisklasse, die als Iterator innerhalb des Elements For verwendet werden kann. Mehr...
| Kopfzeile: | #include <qtasktree.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS TaskTree)target_link_libraries(mytarget PRIVATE Qt6::TaskTree) |
| qmake: | QT += tasktree |
| Since: | Qt 6.11 |
| Geerbt von: | QtTaskTree::ForeverIterator, QtTaskTree::ListIterator, QtTaskTree::RepeatIterator, und QtTaskTree::UntilIterator |
Hinweis: Alle Funktionen in dieser Klasse sind reentrant.
Öffentliche Funktionen
| qsizetype | iteration() const |
Siehe auch For, ForeverIterator, RepeatIterator, UntilIterator, und ListIterator.
Dokumentation der Mitgliedsfunktionen
qsizetype Iterator::iteration() const
Gibt den Iterationsindex des aktuell ausgeführten Handlers innerhalb eines Do body des For (Iterator) >> Konstrukts zurück. Verwenden Sie diese Funktion nur innerhalb des Handler-Bodys eines beliebigen GroupItem -Elements, das im Do -Body des Rezepts platziert ist, andernfalls kann es zu einem Absturz kommen. Stellen Sie sicher, dass Iterator an das Element For übergeben wird.
Beispiel für die Verwendung:
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 der Ausführung von sequentialRecipe wird sein:
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 die Reihenfolge der Iterationsindizes in den Do-Handlern garantiert beibehalten.
Die Ausgabe bei der Ausführung von parallelRecipe wird sein:
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 Done-Handlern nicht garantiert und hängt von der Reihenfolge der beendeten Aufgaben ab. Der zurückgegebene Iterationsindex im done-Handler des parallelen Do -Körpers stimmt mit dem Index der ursprünglichen Iteration für den entsprechenden setup-Handler überein, so dass die Reihenfolge der Iterationsindizes in 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.