QtTaskTree::Do Class
class QtTaskTree::DoEin Body-Element, das mit For- und When-Konstrukten verwendet wird. 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 |
Hinweis: Alle Funktionen in dieser Klasse sind reentrant.
Öffentliche Funktionen
| Do(const QtTaskTree::GroupItems &children) | |
| Do(std::initializer_list<QtTaskTree::GroupItem> children) |
Detaillierte Beschreibung
Ein Body-Element, das eine Liste von Tasks enthält, die bei jeder For -Iteration oder nach dem Vorrücken der Barriere von When ausgeführt werden.
For (RepeatIterator(5)) >> Do { task1, task2 };
Im Falle einer For-Schleife wird der Körper von Do mehrfach ausgeführt. Wenn die Handler onGroupSetup() oder onGroupDone() Teil der an den Konstruktor von Do übergebenen Kinder sind, werden sie nur einmal ausgeführt - bevor die gesamte Schleife beginnt und nachdem die gesamte Schleife beendet ist:
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) };
Das obige Rezept wird, wenn es ausgeführt wird, ausgegeben:
Setup Current iteration: 0 Current iteration: 1 Current iteration: 2 Done
Wenn die Absicht besteht, Gruppenhandler bei jeder Iteration aufzurufen, schließen Sie den Do-Körper mit einem zusätzlichen Group ein:
const Group recipe = For (iterator) >> Do { Group { onGroupSetup(onSetup), QSyncTask(onSync), onDone(onDone) } };
Das letztgenannte Rezept wird, wenn es ausgeführt wird, Folgendes ausgeben:
Setup Current iteration: 0 Done Setup Current iteration: 1 Done Setup Current iteration: 2 Done
Ähnliches geschieht, wenn die Storage als direktes Kind des Bodys übergeben wird. Die Speicherstruktur wird nur einmal instanziiert, bevor die gesamte Schleife beginnt, und sie wird zerstört, sobald die gesamte Schleife beendet ist. Wenn Sie für jede Iteration eine eigene Instanz von Storage haben möchten, umschließen Sie den Do-Body mit einem zusätzlichen Group.
Seien Sie vorsichtig mit der Platzierung des Elements parallel im Do-Körper der For -Schleife, da alle Iterationen parallel starten werden. Dies ist möglicherweise nicht erwünscht, insbesondere im Fall von ForeverIterator.
Dokumentation der Mitgliedsfunktionen
[explicit] Do::Do(const QtTaskTree::GroupItems &children)
Konstruiert einen Do-Body mit children, der bei jeder Iteration von For oder nach dem Vorrücken der Barriere von When ausgeführt wird.
[explicit] Do::Do(std::initializer_list<QtTaskTree::GroupItem> children)
Konstruiert einen Do-Body mit children, der als Initialisierungsliste übergeben wird.
Dies ist eine überladene Funktion.
© 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.