QtTaskTree::Iterator Class
class QtTaskTree::IteratorClasse de base à utiliser comme itérateur dans une boucle « For element ». En savoir 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 |
| Statut : | Aperçu technologique |
Cette classe est en avant-première technologique et est susceptible d'être modifiée.
Remarque : toutes les fonctions de cette classe sont réentrantes.
Fonctions publiques
Voir également For, ForeverIterator, RepeatIterator, UntilIterator et ListIterator.
Documentation des fonctions membres
[constexpr noexcept default] Iterator::Iterator(QtTaskTree::Iterator &&other)
Crée par « move » une instance de ` Iterator`.
qsizetype Iterator::iteration() const
Renvoie l'index d'itération du gestionnaire en cours d'exécution à l'intérieur du corps d'une balise « Do » de la construction « For (Iterator) >> ». N'utilisez cette fonction qu'à l'intérieur du corps d'un gestionnaire de n'importe quel élément « GroupItem » placé dans le corps d'une balise « Do » de la recette ; dans le cas contraire, vous risquez de provoquer un plantage. 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 obtenue lors de l'exécution de ` sequentialRecipe ` sera la suivante :
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 d'être préservé.
La sortie obtenue en exécutant ` parallelRecipe ` sera la suivante :
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 gestionnaires « done » n’est pas garanti et dépend de l’ordre d’achèvement des tâches. L’indice d’itération renvoyé dans le gestionnaire « done » du corps de l’ Do parallèle correspond à l’indice de l’itération d’origine pour le gestionnaire « setup » correspondant ; par conséquent, 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.