Sur cette page

QtTaskTree::Do Class

class QtTaskTree::Do

Élément de corps utilisé avec les constructions « For » et « When ». 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
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

Do(const QtTaskTree::GroupItems &children)
Do(std::initializer_list<QtTaskTree::GroupItem> children)
Do(QtTaskTree::Do &&other)
QtTaskTree::Group operator>>(const QtTaskTree::When &whenItem, const QtTaskTree::Do &doItem)

Description détaillée

Élément de corps contenant une liste des tâches à exécuter à chaque itération de For ou après que la barrière de When a été avancée.

For (RepeatIterator(5)) >> Do {
    task1,
    task2
};

Dans le cas d’une boucle « For », le corps de la fonction « Do » sera exécuté plusieurs fois. Si les gestionnaires « onGroupSetup() » ou « onGroupDone() » font partie des objets enfants passés au constructeur de « Do », ils ne seront exécutés qu’une seule fois : avant le début de la boucle et après la fin de celle-ci :

const RepeatIterator iterator(3);

const auto onSetup = [] { qDebug() << "Setup"; };

const auto onSync = [iterator] { qDebug() << "Current iteration:" << iterator->iteration(); };

const auto onDone = [] { qDebug() << "Done"; };

const Group recipe = For (iterator) >> Do {
    onGroupSetup(onSetup),
    QSyncTask(onSync),
    onDone(onDone)
};

Lorsqu’elle est exécutée, la recette ci-dessus affichera :

Setup
Current iteration: 0
Current iteration: 1
Current iteration: 2
Done

Si l’objectif est d’appeler les gestionnaires de groupe à chaque itération, encadrez le corps de la boucle « Do » par un « Group » supplémentaire, comme suit :

const Group recipe = For (iterator) >> Do {
    Group {
        onGroupSetup(onSetup),
        QSyncTask(onSync),
        onDone(onDone)
    }
};

Une fois exécutée, cette dernière recette affichera :

Setup
Current iteration: 0
Done
Setup
Current iteration: 1
Done
Setup
Current iteration: 2
Done

Le même phénomène se produit lorsque l’ Storage est passé en tant qu’enfant direct du corps. La structure de stockage est instanciée une seule fois, avant le début de la boucle, et détruite juste après la fin de celle-ci. Si l’objectif est de disposer d’une instance distincte de l’ Storage pour chaque itération, encadrez le corps de Do avec un Group supplémentaire.

Faites attention lorsque vous placez un élément ` parallel ` dans le corps `Do` de la boucle ` For `, car toutes les itérations démarreront en parallèle. Cela peut ne pas être souhaitable, en particulier dans le cas de ` ForeverIterator`.

Voir également For et When.

Documentation sur les fonctions membres

[explicit] Do::Do(const QtTaskTree::GroupItems &children)

Crée un corps « Do » avec l'children, destiné à être exécuté à chaque itération de For ou après le franchissement de la barrière de When.

[explicit] Do::Do(std::initializer_list<QtTaskTree::GroupItem> children)

Construit un corps de type `Do` avec ` children ` passé en tant que liste d'initialisation.

Il s'agit d'une fonction surchargée.

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

Crée par la méthode `move` une instance de ` Do`.

Éléments non membres associés

QtTaskTree::Group operator>>(const QtTaskTree::When &whenItem, const QtTaskTree::Do &doItem)

Combine ` whenItem ` avec le corps de ` doItem ` et renvoie un ` Group ` prêt à être utilisé dans les recettes de l’arborescence des tâches.

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