Sur cette page

QtTaskTree::Group Class

class QtTaskTree::Group

Le groupe représente l'élément de base pour composer des recettes déclaratives décrivant comment exécuter et gérer un arbre imbriqué de tâches asynchrones. Plus d'informations...

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 : QtTaskTree::ExecutableItem

Note : 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

Le groupe est un conteneur pour les autres éléments du groupe. Il enferme les tâches enfants dans une unité, qui est vue par le parent du groupe comme une tâche unique et asynchrone. Le groupe étant de type GroupItem, il peut également être un enfant du groupe.

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

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

Vous pouvez personnaliser le comportement du groupe en 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 les 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 des fonctions membres

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

Construit un groupe avec une liste donnée de children.

Ce constructeur est utile lorsque les éléments enfants du groupe ne sont pas connus au moment de la compilation, mais plus tard, au moment 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)

Construit un groupe à partir de std::initializer_list donné 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.