QtTaskTree::Iterator Class
class QtTaskTree::IteratorClasse de base à utiliser comme itérateur à l'intérieur de For element. Plus...
| En-tête : | #include <qtasktree.h> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS TaskTree)target_link_libraries(mytarget PRIVATE Qt6::TaskTree) |
| qmake : | QT += tasktree |
| Depuis : | Qt 6.11 |
| Hérité par : | QtTaskTree::ForeverIterator, QtTaskTree::ListIterator, QtTaskTree::RepeatIterator, et QtTaskTree::UntilIterator |
Note : Toutes les fonctions de cette classe sont réentrantes.
Fonctions publiques
| qsizetype | iteration() const |
Voir aussi For, ForeverIterator, RepeatIterator, UntilIterator, et ListIterator.
Documentation des fonctions membres
qsizetype Iterator::iteration() const
Renvoie l'indice d'itération du gestionnaire en cours d'exécution à l'intérieur d'un corps Do de la construction For (Iterator) >> . N'utilisez cette fonction qu'à l'intérieur du corps du gestionnaire de tout élément GroupItem placé dans le corps Do de la recette, sinon vous risquez de vous planter. Assurez-vous que Iterator est transmis à l'élément For.
Exemple d'utilisation :
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<< "secondes."; } ;const auto onDone = [iterator] { qDebug() << "Finished" << iterator.iteration() << "iteration with timeout" << *iterator<< "secondes."; } ;const Group sequentialRecipe = For(iterator)>> Do { QTimeoutTask(onSetup, onDone) } ;const Group parallelRecipe = For(iterator)>> Do { parallel, QTimeoutTask(onSetup, onDone) } ;
La sortie lors de l'exécution de sequentialRecipe sera :
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.
En mode séquentiel, l'ordre des indices d'itération dans les gestionnaires done est garanti.
Le résultat de l'exécution de parallelRecipe sera le suivant :
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.
En mode parallèle, l'ordre des indices d'itération dans les done handlers n'est pas garanti et dépend de l'ordre des tâches terminées. L'indice d'itération renvoyé dans le gestionnaire done du corps parallèle de Do correspond à l'indice de l'itération d'origine pour le gestionnaire setup correspondant, de sorte que l'ordre des indices d'itération dans les gestionnaires done suivants peut ne pas être croissant.
© 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.