QtTaskTree::GroupItem Class
class QtTaskTree::GroupItemGroupItem représente l'élément de base pouvant faire partie de n'importe quelle « Group ». 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érité par : | |
| 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.
Types publics
Fonctions publiques
| GroupItem(const QtTaskTree::GroupItems &children) | |
| GroupItem(const QtTaskTree::Storage<StorageStruct> &storage) | |
| GroupItem(std::initializer_list<QtTaskTree::GroupItem> children) | |
| GroupItem(QtTaskTree::GroupItem &&other) |
Description détaillée
GroupItem est un élément de base pouvant faire partie de n’importe quel Group. Il encapsule les fonctionnalités fournies par toute sous-classe de GroupItem. Il s’agit d’un type de valeur et la copie d’une instance de GroupItem ne présente aucun risque, même si celle-ci a été initialement créée via le constructeur de la sous-classe.
Il existe quatre types principaux de GroupItem :
| GroupItem Type | Brève description |
|---|---|
| QCustomTask | Définit un type de tâche asynchrone ainsi que ses gestionnaires de démarrage, d’achèvement et d’erreur. Il est associé à un nom de tâche unique, tel que QThreadFunctionTask<ResultType> ou QNetworkReplyWrapperTask. Les tâches asynchrones constituent la principale raison d’être d’une arborescence de tâches. |
| Group | Un conteneur pour d’autres éléments de groupe. Le groupe étant de type GroupItem, il est possible de l’imbriquer dans un autre groupe. Le groupe est perçu par son parent comme une seule tâche asynchrone. |
| GroupItem contenant Storage | Permet aux tâches enfants d’un groupe d’échanger des données. Lorsqu’un `GroupItem` contenant un ` Storage ` est placé à l’intérieur d’un groupe, l’arborescence de tâches instancie l’objet de données du stockage juste avant l’entrée dans le groupe, et le détruit juste après la sortie du groupe. |
| Autres éléments de contrôle de groupe | Les ExecutionMode s ou éléments renvoyés par ` workflowPolicy()` influencent le comportement du groupe. Les éléments renvoyés par ` onGroupSetup()` ou ` onGroupDone()` définissent des gestionnaires personnalisés appelés lorsque le groupe commence ou termine son exécution. |
Documentation sur les types de membres
[alias] GroupItem::GroupDoneHandler
Alias de type pour std::function<DoneResult(DoneWith)> ou DoneResult.
GroupDoneHandler est un argument de l'élément onGroupDone(). Toute fonction présentant la signature ci-dessus, lorsqu'elle est transmise en tant que gestionnaire de fin de groupe, sera appelée par l'arborescence des tâches en cours d'exécution lorsque l'exécution du groupe prendra fin.
L'argument ` DoneWith ` est facultatif et votre gestionnaire de fin d'exécution peut l'omettre. Lorsqu'il est fourni, il contient les informations relatives au résultat final d'un groupe qui seront transmises à son parent.
La valeur DoneResult renvoyée est facultative et votre gestionnaire peut renvoyer void à la place. Dans ce cas, le résultat final du groupe sera égal à la valeur indiquée par l’argument DoneWith. Lorsque le gestionnaire renvoie la valeur DoneResult, le résultat final du groupe peut être modifié au sein du corps du gestionnaire « done » par la valeur renvoyée.
Pour un `GroupDoneHandler` de type ` DoneResult `, aucune gestion supplémentaire n’est exécutée, et le groupe se termine inconditionnellement avec la valeur transmise de ` DoneResult`, en ignorant la politique de workflow du groupe.
Voir également onGroupDone(), GroupSetupHandler et QCustomTask::TaskDoneHandler.
[alias] GroupItem::GroupSetupHandler
Alias de type pour ` std::function<SetupResult()>`.
GroupSetupHandler est un argument de l'élément onGroupSetup(). Toute fonction présentant la signature ci-dessus, lorsqu'elle est transmise en tant que gestionnaire de configuration de groupe, sera appelée par l'arborescence des tâches en cours d'exécution au moment où l'exécution du groupe démarre.
La valeur de retour du gestionnaire indique au groupe en cours d’exécution comment procéder une fois l’appel du gestionnaire terminé. La valeur de retour par défaut de ` SetupResult::Continue ` indique au groupe de poursuivre son exécution, c’est-à-dire de commencer à exécuter ses tâches enfants. La valeur de retour de ` SetupResult::StopWithSuccess ` ou ` SetupResult::StopWithError ` indique au groupe d’ignorer l’exécution des tâches enfants et de se terminer immédiatement, respectivement avec succès ou avec une erreur.
Lorsque le type de retour est soit SetupResult::StopWithSuccess, soit SetupResult::StopWithError, le gestionnaire « done » du groupe (s’il est fourni) est appelé de manière synchrone immédiatement après.
Remarque : même si le gestionnaire de configuration du groupe renvoie StopWithSuccess ou StopWithError, le gestionnaire « done » du groupe est tout de même appelé. Ce comportement diffère de celui du gestionnaire « done » d’une tâche et est susceptible d’évoluer à l’avenir.
L’élément ` onGroupSetup()` accepte également les fonctions sous la forme abrégée ` std::function<void()>`, c’est-à-dire que la valeur de retour est ` void`. Dans ce cas, on suppose que la valeur de retour est ` SetupResult::Continue`.
Voir également onGroupSetup(), GroupDoneHandler et QCustomTask::TaskSetupHandler.
Documentation sur les fonctions membres
GroupItem::GroupItem(const QtTaskTree::GroupItems &children)
Crée un élément GroupItem à partir d'une liste donnée d'children.
Lorsque cet élément GroupItem est analysé par l'QTaskTree, il est simplement remplacé par son children.
Ce constructeur est utile pour créer un élément « Group » à partir de listes d’éléments « GroupItem » :
static GroupItems getItems();
...
const Group root {
parallel,
finishAllAndSuccess,
getItems(), // GroupItems list is wrapped into a single GroupItem element
onGroupSetup(...),
onGroupDone(...)
};Si vous souhaitez créer une sous-arborescence, utilisez plutôt Group.
Remarque : ne confondezpas cet élément `GroupItem` avec l’élément ` Group `, car ` Group ` conserve l’imbrication de ses enfants après analyse par l’arborescence des tâches, ce qui n’est pas le cas de cet élément `GroupItem`.
Voir également Group.
template <typename StorageStruct> GroupItem::GroupItem(const QtTaskTree::Storage<StorageStruct> &storage)
Crée un élément `GroupItem` contenant l'objet ` storage `.
Lorsque l’élément « Group » contenant ce « GroupItem » est intégré à l’arborescence des tâches en cours d’exécution, une instance de « StorageStruct » est créée dynamiquement.
Lorsque ce groupe est sur le point d’être quitté après son exécution, l’ StorageStruct précédemment instancié est supprimé.
L’instance d’ StorageStruct créée dynamiquement est accessible depuis le corps de n’importe quel gestionnaire de l’élément Group parent, y compris les groupes imbriqués et leurs tâches, via les méthodes Storage::operator->(), Storage::operator*() ou Storage::activeStorage().
Voir également Storage.
GroupItem::GroupItem(std::initializer_list<QtTaskTree::GroupItem> children)
Il s'agit d'une fonction surchargée.
Voir également GroupItem(const QtTaskTree::GroupItems &children).
[constexpr noexcept default] GroupItem::GroupItem(QtTaskTree::GroupItem &&other)
Crée par construction une instance de ` GroupItem`.
© 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.