QtTaskTree::Group Class
class QtTaskTree::GroupGroup ist das Basiselement für die Erstellung von deklarativen Rezepten, die beschreiben, wie ein verschachtelter Baum von asynchronen Aufgaben auszuführen und zu behandeln ist. Mehr...
| Kopfzeile: | #include <qtasktree.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS TaskTree)target_link_libraries(mytarget PRIVATE Qt6::TaskTree) |
| qmake: | QT += tasktree |
| Seit: | Qt 6.11 |
| Vererbt: | QtTaskTree::ExecutableItem |
Hinweis: Alle Funktionen in dieser Klasse sind reentrant.
Öffentliche Funktionen
| Group(const QtTaskTree::GroupItems &children) | |
| Group(std::initializer_list<QtTaskTree::GroupItem> children) |
Detaillierte Beschreibung
Group ist ein Container für andere Gruppenelemente. Sie fasst untergeordnete Aufgaben zu einer Einheit zusammen, die vom übergeordneten Element der Gruppe als eine einzige, asynchrone Aufgabe betrachtet wird. Da Group vom Typ GroupItem ist, kann sie auch ein Kind von Group sein.
Fügen Sie untergeordnete Aufgaben in die Gruppe ein, indem Sie benutzerdefinierte Alias-Aufgabennamen verwenden, z. B. QThreadFunctionTask<ResultType> oder QNetworkReplyWrapperTask:
const Group group { QNetworkReplyWrapperTask(...), QThreadFunctionTask<int>(...) };
Sie können das Verhalten der Gruppe anpassen, indem Sie die Elemente ExecutionMode oder WorkflowPolicy einfügen:
const Group group { parallel, continueOnError, QNetworkReplyWrapperTask(...), QNetworkReplyWrapperTask(...) };
Die Gruppe kann verschachtelte Gruppen enthalten:
const Group group { finishAllAndSuccess, QNetworkReplyWrapperTask(...), Group { QNetworkReplyWrapperTask(...), Group { parallel, QNetworkReplyWrapperTask(...), QNetworkReplyWrapperTask(...), } QThreadFunctionTask<QString>(...) } };
Die Gruppe kann dynamisch eine benutzerdefinierte Speicherstruktur instanziieren, die für den Datenaustausch zwischen Aufgaben verwendet werden kann:
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) };
Dokumentation der Mitgliedsfunktionen
Group::Group(const QtTaskTree::GroupItems &children)
Konstruiert eine Gruppe mit einer gegebenen Liste von children.
Dieser Konstruktor ist nützlich, wenn die untergeordneten Elemente der Gruppe nicht zur Kompilierzeit, sondern erst später zur Laufzeit bekannt sind:
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)
Konstruiert eine Gruppe aus std::initializer_list gegeben durch children.
Dieser Konstruktor ist nützlich, wenn alle untergeordneten Elemente der Gruppe zur Kompilierungszeit bekannt sind:
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.