- Extending Qt Creator Manual
- Qt TaskTree
- Extending Qt Creator Manual 20.0.0-beta2

# Qt TaskTree

Qt TaskTree provides a declarative way to compose and execute asynchronous task workflows with proper error handling and execution policies.

Note: Qt TaskTree in QtVer is in Technology Preview, excluding its API from Qt's compatibility promises.

## Getting started

Qt TaskTree allows you to create complex task hierarchies with different execution policies, parallel/sequential execution, and proper error handling.

Key concepts:

- Recipes - Declarative descriptions of task workflows.
- Groups - Containers that define execution policies for child tasks.
- Storage - Thread-local storage system for sharing data between tasks.
- Iterators - Support for loops and repetitive task execution.

## Using the Module

Using a Qt module's C++ API requires linking against the module library, either directly or through other dependencies. Several build tools have dedicated support for this, including CMake and qmake.

### Building with CMake

Use the `find_package()` command to locate the needed module component in the `Qt6` package:

     find_package(Qt6 REQUIRED COMPONENTS TaskTree)
     target_link_libraries(mytarget PRIVATE Qt6::TaskTree)

For more details, see the Build with CMake overview.

### Building with qmake

To configure the module for building with qmake, add the module as a value of the `QT` variable in the project's .pro file:

     QT += tasktree

## Task adapters

The module includes several built-in task adapters for common operations:

- QProcessTask - Executes external processes.
- QThreadFunctionTask - Runs functions in separate threads.
- QNetworkReplyWrapperTask - Handles network operations.
- QTcpSocketWrapperTask - Handles TCP socket operations.
- QBarrierTask - Provides synchronization primitives.
- QTimeoutTask - Provides timer-based delays.

## Workflow Policies

Groups support different workflow policies for handling task results:

- StopOnError - Stops execution on first error (default).
- ContinueOnError - Continues execution despite errors.
- StopOnSuccess - Stops on first successful task.
- ContinueOnSuccess - Continues despite successful tasks.
- StopOnSuccessOrError - Stops on first completed task.
- FinishAllAndSuccess - Runs all tasks, reports success.
- FinishAllAndError - Runs all tasks, reports error.

## Examples

- Qt TaskTree Examples

## Reference

- Qt TaskTree C++ Classes

## Licenses

The Qt TaskTree module is available under commercial licenses from The Qt Company. In addition, it is available under free software licenses: The GNU Lesser General Public License, version 3, or the GNU General Public License, version 2. See Qt Licensing for further details.