En esta página

QtTaskTree::Group Class

class QtTaskTree::Group

Group representa el elemento básico para componer recetas declarativas que describen cómo ejecutar y manejar un árbol anidado de tareas asíncronas. Más...

Cabecera: #include <qtasktree.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS TaskTree)
target_link_libraries(mytarget PRIVATE Qt6::TaskTree)
qmake: QT += tasktree
Desde: Qt 6.11
Hereda: QtTaskTree::ExecutableItem

Nota: Todas las funciones de esta clase son reentrantes.

Funciones Públicas

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

Descripción Detallada

Grupo es un contenedor para otros elementos de grupo. Encierra tareas hijas en una unidad, que es vista por el padre del grupo como una única tarea asíncrona. Dado que Group es del tipo GroupItem, también puede ser hijo de Group.

Inserte tareas secundarias en el grupo utilizando nombres de tarea personalizados con alias, como QThreadFunctionTask<ResultType> o QNetworkReplyWrapperTask:

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

Puede personalizar el comportamiento del grupo insertando los elementos ExecutionMode o WorkflowPolicy:

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

El grupo puede contener grupos anidados:

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

El grupo puede instanciar dinámicamente una estructura de almacenamiento personalizada, que puede utilizarse para el intercambio de datos entre tareas:

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)
};

Documentación de las funciones miembro

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

Construye un grupo con una lista dada de children.

Este constructor es útil cuando los elementos hijos del grupo no se conocen en tiempo de compilación, sino más tarde, en tiempo de ejecución:

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)

Construye un grupo a partir de std::initializer_list dado por children.

Este constructor es útil cuando se conocen todos los elementos hijos del grupo en tiempo de compilación:

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.