Sur cette page

QtTaskTree::Group Class

class QtTaskTree::Group

Un « groupe » constitue l'élément de base permettant de composer des recettes déclaratives décrivant comment exécuter et gérer une arborescence imbriquée de tâches asynchrones. 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érite de : QtTaskTree::ExecutableItem
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

Group(const QtTaskTree::GroupItems &children)
Group(std::initializer_list<QtTaskTree::GroupItem> children)

Description détaillée

Group est un conteneur destiné à accueillir d'autres éléments de groupe. Il regroupe des tâches enfants en une seule unité, qui est perçue par le parent du groupe comme une seule tâche asynchrone. Étant donné que Group est de type GroupItem, il peut également être un enfant de Group.

Insérez des tâches enfants dans le groupe en utilisant des noms de tâches personnalisés sous forme d’alias, tels que QThreadFunctionTask<ResultType> ou QNetworkReplyWrapperTask:

const Group group {
    QNetworkReplyWrapperTask(...),
    QThreadFunctionTask<int>(...)
};

Vous pouvez personnaliser le comportement du groupe en y insérant les éléments « ExecutionMode » ou « WorkflowPolicy » :

const Group group {
    parallel,
    continueOnError,
    QNetworkReplyWrapperTask(...),
    QNetworkReplyWrapperTask(...)
};

Le groupe peut contenir des groupes imbriqués :

const Group group {
    finishAllAndSuccess,
    QNetworkReplyWrapperTask(...),
    Group {
        QNetworkReplyWrapperTask(...),
        Group {
            parallel,
            QNetworkReplyWrapperTask(...),
            QNetworkReplyWrapperTask(...),
        }
        QThreadFunctionTask<QString>(...)
    }
};

Le groupe peut instancier dynamiquement une structure de stockage personnalisée, qui peut être utilisée pour l’échange de données entre tâches :

struct MyCustomStruct { QByteArray data; };

Storage<MyCustomStruct> storage;

const auto onFirstSetup = [](QNetworkReplyWrapper &task) { ... };
const auto onFirstDone = [storage](const QNetworkReplyWrapper &task) {
    // storage-> gives a pointer to MyCustomStruct instance,
    // created dynamically by the running task tree.
    storage->data = task.reply()->readAll();
};
const auto onSecondSetup = [storage](QThreadFunction<QImage> &task) {
    // storage-> gives a pointer to MyCustomStruct. Since the group is sequential,
    // the stored MyCustomStruct was already updated inside the onFirstDone handler.
    const QByteArray storedData = storage->data;
};

const Group group {
    // When the group is entered by a running task tree, it creates MyCustomStruct
    // instance dynamically. It is later accessible from all handlers via
    // the *storage or storage-> operators.
    sequential,
    storage,
    QNetworkReplyWrapperTask(onFirstSetup, onFirstDone, CallDoneFlag::OnSuccess),
    QThreadFunctionTask<QImage>(onSecondSetup)
};

Documentation sur les fonctions membres

Group::Group(const QtTaskTree::GroupItems &children)

Crée un groupe à partir d'une liste donnée d'children.

Ce constructeur est utile lorsque les éléments enfants du groupe ne sont pas connus au moment de la compilation, mais seulement plus tard, lors de l'exécution :

const QStringList sourceList = ...;

GroupItems groupItems { parallel };

for (const QString &source : sourceList) {
    const QNetworkReplyWrapperTask task(...); // use source for setup handler
    groupItems << task;
}

const Group group(groupItems);

Group::Group(std::initializer_list<QtTaskTree::GroupItem> children)

Crée un groupe à partir d'std::initializer_list s fournies par children.

Ce constructeur est utile lorsque tous les éléments enfants du groupe sont connus au moment de la compilation :

const Group group {
    finishAllAndSuccess,
    QNetworkReplyWrapperTask(...),
    Group {
        QNetworkReplyWrapperTask(...),
        Group {
            parallel,
            QNetworkReplyWrapperTask(...),
            QNetworkReplyWrapperTask(...),
        }
        QThreadFunctionTask<QString>(...)
    }
};

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