En esta página

QtTaskTree::Do Class

class QtTaskTree::Do

Elemento del cuerpo utilizado con las construcciones For y When. 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

Nota: Todas las funciones de esta clase son reentrantes.

Funciones Públicas

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

Descripción detallada

Un elemento del cuerpo, que contiene una lista de tareas a ejecutar en cada iteración de For o después de que la barrera de When haya avanzado.

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

En caso de bucle For, el cuerpo del Do se ejecutará múltiples veces. Si los manejadores onGroupSetup() o onGroupDone() son parte de los hijos pasados al constructor de Do, serán ejecutados sólo una vez - antes de que el bucle completo comience, y después de que el bucle completo termine:

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

La receta anterior, cuando se ejecute, dará salida:

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

Si la intención es invocar manejadores de grupo en cada iteración, encierre el cuerpo de Do con un Group extra, como:

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

Esta última receta, cuando se ejecute, dará como resultado:

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

Lo mismo ocurre cuando el Storage se pasa como hijo directo del cuerpo. La estructura de almacenamiento se instanciará una sola vez, antes de que comience todo el bucle, y se destruirá justo después de que finalice todo el bucle. Si la intención es tener una instancia separada del Storage para cada iteración, encierre el cuerpo Do con un Group extra.

Tenga cuidado al colocar el elemento parallel en el cuerpo del Do del bucle For, ya que todas las iteraciones comenzarán en paralelo. Esto podría no ser deseado, especialmente en el caso de ForeverIterator.

Vea también For y When.

Documentación de Funciones Miembro

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

Construye un cuerpo Do con children para ser ejecutado en cada iteración de For o después de que la barrera de When haya avanzado.

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

Construye un cuerpo Do con children pasado como lista inicializadora.

Esta es una función sobrecargada.

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