QtTaskTree Namespace
Der Namespace „QtTaskTree“ umfasst alle Klassen und globalen Funktionen des Moduls „TaskTree“. Mehr...
| Header: | #include <QtTaskTree> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS TaskTree) target_link_libraries(mytarget PRIVATE Qt6::TaskTree) |
| qmake: | QT += tasktree |
| Seit: | Qt 6.11 |
| Status: | Technologievorschau |
Dieser Namespace befindet sich in der Technologievorschau und kann sich noch ändern.
Klassen
(technology preview) class | Do |
(technology preview) class | Else |
(technology preview) class | ElseIf |
(technology preview) class | ExecutableItem |
(technology preview) class | ExecutionMode |
(technology preview) class | For |
(technology preview) class | Forever |
(technology preview) class | ForeverIterator |
(technology preview) class | Group |
(technology preview) class | GroupItem |
(technology preview) class | If |
(technology preview) class | Iterator |
(technology preview) class | ListIterator |
(technology preview) struct | ObjectSignal |
(technology preview) class | ParallelLimit |
(technology preview) class | QBarrier |
(technology preview) class | QCustomTask |
(technology preview) class | QDefaultTaskAdapter |
(technology preview) class | QMappedTaskTreeRunner |
(technology preview) class | QNetworkReplyWrapper |
(technology preview) class | QParallelTaskTreeRunner |
(technology preview) class | QProcessTaskDeleter |
(technology preview) class | QSequentialTaskTreeRunner |
(technology preview) class | QSingleTaskTreeRunner |
(technology preview) class | QStartedBarrier |
(technology preview) class | QSyncTask |
(technology preview) class | QTaskInterface |
(technology preview) class | QTaskTree |
(technology preview) class | QTcpSocketWrapper |
(technology preview) class | QThreadFunction |
(technology preview) class | QThreadFunctionBase |
(technology preview) class | RepeatIterator |
(technology preview) class | Storage |
(technology preview) class | Then |
(technology preview) class | UntilIterator |
(technology preview) class | When |
Typen
| BarrierKickerGetter | |
| flags | CallDone |
| enum class | CallDoneFlag { Never, OnSuccess, OnError, OnCancel, Always } |
| enum class | DoneResult { Success, Error } |
| enum class | DoneWith { Success, Error, Cancel } |
| GroupItems | |
| QBarrierTask | |
| QNetworkReplyWrapperTask | |
| QProcessTask | |
| QStoredBarrier | |
| QTaskTreeTask | |
| QTcpSocketWrapperTask | |
| QThreadFunctionTask | |
| QTimeoutTask | |
| enum class | SetupResult { Continue, StopWithSuccess, StopWithError } |
| TreeDoneHandler | |
| TreeSetupHandler | |
| enum class | WorkflowPolicy { StopOnError, ContinueOnError, StopOnSuccess, ContinueOnSuccess, StopOnSuccessOrError, …, FinishAllAndError } |
Variablen
| const QtTaskTree::GroupItem | continueOnError |
| const QtTaskTree::GroupItem | continueOnSuccess |
| const QtTaskTree::ExecutableItem | errorItem |
| const QtTaskTree::GroupItem | finishAllAndError |
| const QtTaskTree::GroupItem | finishAllAndSuccess |
| const QtTaskTree::GroupItem | nullItem |
| const QtTaskTree::ExecutionMode | parallel |
| const QtTaskTree::ExecutionMode | parallelIdealThreadCountLimit |
| const QtTaskTree::ExecutionMode | sequential |
| const QtTaskTree::GroupItem | stopOnError |
| const QtTaskTree::GroupItem | stopOnSuccess |
| const QtTaskTree::GroupItem | stopOnSuccessOrError |
| const QtTaskTree::ExecutableItem | successItem |
Funktionen
| QtTaskTree::ExecutableItem | barrierAwaiterTask(const QtTaskTree::QStoredBarrier &storedBarrier) |
| QtTaskTree::ObjectSignal<std::decay_t<Signal>> | makeObjectSignal(typename QtPrivate::FunctionPointer<Signal>::Object *object, Signal &&signal) |
| QtTaskTree::GroupItem | onGroupDone(Handler &&handler, QtTaskTree::CallDone callDone = CallDoneFlag::Always) |
| QtTaskTree::GroupItem | onGroupSetup(Handler &&handler) |
| QtTaskTree::ExecutableItem | signalAwaiterTask(const typename QtPrivate::FunctionPointer<Signal>::Object *sender, Signal signal) |
| QtTaskTree::ExecutableItem | timeoutTask(const std::chrono::milliseconds &timeout, QtTaskTree::DoneResult result = DoneResult::Error) |
| QtTaskTree::GroupItem | workflowPolicy(QtTaskTree::WorkflowPolicy policy) |
Klassen
Klasse Do
Ein Körperelement, das mit „For“- und „When“-Konstrukten verwendet wird. Mehr...
Klasse „Else“
Ein „else“-Element, das in bedingten Ausdrücken verwendet wird. Mehr...
Klasse „ElseIf“
Ein „else if“-Element, das in bedingten Ausdrücken verwendet wird. Mehr...
Klasse „ExecutableItem“
Basisklasse für ausführbare Aufgabenelemente. Mehr...
Klasse ExecutionMode
Das Gruppenelement, das den Ausführungsmodus beschreibt. Mehr...
Klasse „For“
Ein „for“-Schleifenelement. Mehr...
Klasse „Forever“
Endlosschleife von Teilaufgaben. Mehr...
Klasse „ForeverIterator“
Unendlicher Iterator zur Verwendung innerhalb eines „For“-Elements. Mehr...
Klasse „Group“
„Group“ stellt das Grundelement für die Erstellung deklarativer Rezepte dar, die beschreiben, wie ein verschachtelter Baum asynchroner Aufgaben ausgeführt und verwaltet wird. Mehr...
Klasse „GroupItem“
„GroupItem“ stellt das Grundelement dar, das Teil eines beliebigen „ Group “ sein kann. Mehr...
Klasse „If“
Ein „if“-Element, das in bedingten Ausdrücken verwendet wird. Mehr...
Klasse Iterator
Basisklasse, die als Iterator innerhalb eines „For“-Elements verwendet wird. Mehr...
Klasse „ListIterator“
Der Listen-Iterator, der innerhalb des „For“-Elements verwendet wird. Mehr...
Klasse „ObjectSignal“
Struktur zur Beschreibung einer Unterklasse v QObject s und ihres Signals. Mehr...
Klasse ParallelLimit
Der parallele Ausführungsmodus mit einer benutzerdefinierten Grenze. Mehr...
Klasse QBarrier
Eine asynchrone Aufgabe, die auf Anforderung beendet wird. Mehr...
Klasse QCustomTask
Eine Klassenvorlage zur Deklaration benutzerdefinierter Aufgabenelemente und zur Definition ihrer Setup- und Done-Handler. Mehr...
Klasse QDefaultTaskAdapter
Eine Klassenvorlage, die einen Standard-Task-Adapter bereitstellt, der in „ QCustomTask “ verwendet wird. Mehr...
Klasse QMappedTaskTreeRunner
Ein Ausführungscontroller für einen zugeordneten Aufgabenbaum mit einem vorgegebenen Schlüsseltyp. Mehr...
Klasse QNetworkReplyWrapper
Ein Wrapper um ` QNetworkReply ` und ` QNetworkAccessManager`. Mehr...
Klasse QParallelTaskTreeRunner
Ein Ausführungscontroller für parallele Aufgabenbäume. Mehr...
Klasse QProcessTaskDeleter
Ein benutzerdefinierter Löscher für ` QProcess`, der von ` QProcessTask` verwendet wird. Mehr...
Klasse QSequentialTaskTreeRunner
Ein sequenzieller Ausführungscontroller für Aufgabenbäume. Mehr...
Klasse QSingleTaskTreeRunner
Ein Ausführungscontroller für einen einzelnen Aufgabenbaum. Mehr...
Klasse QStartedBarrier
Ein gestarteter „ QBarrier “ mit einem vorgegebenen Limit. Mehr...
Klasse QSyncTask
Führt einen benutzerdefinierten Handler synchron zwischen anderen Aufgaben aus. Mehr...
Klasse QTaskInterface
QTaskInterface ist eine Hilfsklasse, die bei der Anpassung der Schnittstelle benutzerdefinierter Aufgaben verwendet wird. Mehr...
Klasse QTaskTree
Die Klasse QTaskTree führt den Baum asynchroner Aufgaben aus, die deklarativ definiert wurden. Mehr...
Klasse QTcpSocketWrapper
Ein Wrapper um ` QTcpSocket`. Mehr...
Klasse QThreadFunction
Eine Klassenvorlage, die die Ausführung einer Funktion in einem separaten Thread über `QtConcurrent::run()` steuert. Mehr...
Klasse QThreadFunctionBase
Eine Basisklasse für die Klassenvorlage „ QThreadFunction “. Mehr...
Klasse RepeatIterator
Der iterative Iterator, der innerhalb des „For“-Elements verwendet werden soll. Mehr...
Klasse „Storage“
Eine Klassenvorlage für den benutzerdefinierten Datenaustausch im Baum der laufenden Aufgaben. Mehr...
Klasse „Then“
Ein „then“-Element, das in bedingten Ausdrücken verwendet wird. Mehr...
Klasse „UntilIterator“
Der bedingte Iterator, der innerhalb des „For“-Elements verwendet wird. Mehr...
Klasse „When“
Ein Element, das die Ausführung eines Hauptteils bis zum Überschreiten einer Barriere verzögert. Mehr...
Typdokumentation
[alias] BarrierKickerGetter
Typalias für die Funktion, die ein ` QStoredBarrier ` entgegennimmt und ` ExecutableItem` zurückgibt, d. h. ` std::function<ExecutableItem(const QStoredBarrier &)>`, zur Verwendung innerhalb des Konstruktors von ` When `.
enum class QtTaskTree::CallDoneFlag
flags QtTaskTree::CallDone
Diese Enumeration ist ein optionales Argument für den Konstruktor des Elements „ onGroupDone()“ oder einer benutzerdefinierten Aufgabe. Sie gibt dem Aufgabenbaum vor, wann der „done“-Handler der Gruppe oder der Aufgabe aufgerufen werden soll.
| Konstante | Wert | Beschreibung |
|---|---|---|
QtTaskTree::CallDoneFlag::Never | 0 | Der „done“-Handler wird niemals aufgerufen. |
QtTaskTree::CallDoneFlag::OnSuccess | 1 << 0 | Der „done“-Handler wird erst nach erfolgreicher Ausführung aufgerufen, d. h. wenn „ DoneWith::Success “ gilt. |
QtTaskTree::CallDoneFlag::OnError | 1 << 1 | Der „done“-Handler wird erst nach fehlgeschlagener Ausführung aufgerufen, d. h. wenn „ DoneWith::Error “ gilt. |
QtTaskTree::CallDoneFlag::OnCancel | 1 << 2 | Der „done“-Handler wird nur nach einer abgebrochenen Ausführung aufgerufen, d. h., wenn „ DoneWith::Cancel “ gilt. |
QtTaskTree::CallDoneFlag::Always | OnSuccess | OnError | OnCancel | Der „done“-Handler wird immer aufgerufen. |
Der Typ „CallDone“ ist ein „typedef“ für „QFlags<CallDoneFlag>“. Er speichert eine OR-Kombination von „CallDoneFlag“-Werten.
enum class QtTaskTree::DoneResult
Diese Enumeration wird optional von der „done“-Handler-Funktion der Gruppe oder der Aufgabe zurückgegeben. Wenn der „done“-Handler keinen Wert zurückgibt, d. h. sein Rückgabetyp „ void “ ist, wird sein endgültiger Rückgabewert automatisch vom laufenden Aufgabenbaum abgeleitet und an die übergeordnete Gruppe gemeldet.
Wenn der „Done“-Handler „DoneResult“ zurückgibt, können Sie den endgültigen Rückgabewert innerhalb des Handlers anpassen.
Wird „DoneResult“ von der „done“-Handler-Funktion der Gruppe zurückgegeben, wird die Workflow-Richtlinie der Gruppe ignoriert.
Diese Enumeration wird auch innerhalb des Signals `TaskInterface::done()` verwendet und gibt an, ob die Aufgabe erfolgreich oder mit einem Fehler abgeschlossen wurde.
| Konstante | Wert | Beschreibung |
|---|---|---|
QtTaskTree::DoneResult::Success | 0 | Die Ausführung der Gruppe oder der Aufgabe endet erfolgreich. |
QtTaskTree::DoneResult::Error | 1 | Die Ausführung der Gruppe oder der Aufgabe endet mit einem Fehler. |
enum class QtTaskTree::DoneWith
Diese Enumeration ist ein optionales Argument für den „done“-Handler der Gruppe oder Aufgabe. Sie gibt an, ob die Gruppe oder Aufgabe erfolgreich oder mit einem Fehler abgeschlossen wurde oder ob sie abgebrochen wurde.
Sie wird außerdem als Argument innerhalb des Signals „ QTaskTree::done()“ verwendet und gibt das Endergebnis der Ausführung von „ QTaskTree “ an.
| Konstante | Wert | Beschreibung |
|---|---|---|
QtTaskTree::DoneWith::Success | 0 | Die Ausführung der Gruppe oder Aufgabe wurde erfolgreich abgeschlossen. |
QtTaskTree::DoneWith::Error | 1 | Die Ausführung der Gruppe oder der Aufgabe endete mit einem Fehler. |
QtTaskTree::DoneWith::Cancel | 2 | Die Ausführung der Gruppe oder der Aufgabe wurde abgebrochen. Dies geschieht, wenn der Benutzer „ QTaskTree::cancel()“ für den laufenden Aufgabenbaum aufruft oder wenn die Workflow-Richtlinie der Gruppe dazu führt, dass einige ihrer laufenden untergeordneten Elemente abgebrochen werden. Das Anpassen des Endergebnisses des „done“-Handlers durch die Rückgabe von „ DoneResult “ aus dem Handler hat keine Auswirkung, wenn die Ausführung der Gruppe oder der Aufgabe abgebrochen wurde. |
[alias] QtTaskTree::GroupItems
Typalias für QList<GroupItem>.
[alias] QBarrierTask
Typalias für die „ QCustomTask “ <QBarrier>, zur Verwendung in Rezepten.
[alias] QNetworkReplyWrapperTask
Typalias für die „ QCustomTask “ <QNetworkReplyWrapper>, zur Verwendung in Rezepten.
[alias] QProcessTask
Typalias für den Typ „ QCustomTask “ <QProcess> unter Verwendung von QProcessTaskDeleter, zur Verwendung in Rezepten.
[alias] QStoredBarrier
Typalias für den Typ „ QtTaskTree::Storage “ <QStartedBarrier>, zur Verwendung in Rezepten.
[alias] QTaskTreeTask
Typalias für die Klasse „ QCustomTask “ <QTaskTree>, zur Verwendung in Rezepten.
[alias] QTcpSocketWrapperTask
Typalias für das „ QCustomTask “ <QTcpSocketWrapper>, zur Verwendung in Rezepten.
[alias] template <typename ResultType> QThreadFunctionTask
Typalias für „ QCustomTask<QThreadFunction<ResultType>>“, wobei „ ResultType “ den Rückgabetyp der Thread-Funktion angibt, der innerhalb von Rezepten verwendet werden soll.
[alias] QTimeoutTask
Typalias für die Klasse „ QCustomTask “ <std::chrono::milliseconds>, zur Verwendung in Rezepten. Mit dem Parameter „ std::chrono::milliseconds “ wird die Zeitüberschreitungsdauer festgelegt. Die Standardzeitüberschreitung lautet „ std::chrono::milliseconds::zero() “, d. h., die „QTimeoutTask“ wird beendet, sobald die Steuerung zur laufenden Ereignisschleife zurückkehrt.
Anwendungsbeispiel:
using namespace std::chrono;
using namespace std::chrono_literals;
const auto onSetup = [](milliseconds &timeout) { timeout = 1000ms; }
const auto onDone = [] { qDebug() << "Timed out."; }
const Group root {
QTimeoutTask(onSetup, onDone)
};Siehe auch „ timeoutTask()“.
enum class QtTaskTree::SetupResult
Diese Enumeration wird optional von der Setup-Handler-Funktion der Gruppe oder der Aufgabe zurückgegeben. Sie gibt dem laufenden Aufgabenbaum vor, wie nach Abschluss der Ausführung des Setup-Handlers weiter verfahren werden soll.
| Konstante | Wert | Beschreibung |
|---|---|---|
QtTaskTree::SetupResult::Continue | 0 | Standard. Die Ausführung der Gruppe oder Aufgabe wird normal fortgesetzt. Wenn der Setup-Handler einer Gruppe oder Aufgabe `void` zurückgibt, wird davon ausgegangen, dass er `Continue` zurückgegeben hat. |
QtTaskTree::SetupResult::StopWithSuccess | 1 | Die Ausführung der Gruppe oder der Aufgabe wird sofort erfolgreich beendet. Wird dieser Wert vom Setup-Handler der Gruppe zurückgegeben, werden alle untergeordneten Aufgaben übersprungen, und der Handler „ onGroupDone()“ der Gruppe wird mit „ DoneWith::Success “ aufgerufen. Die Gruppe meldet ihrer übergeordneten Ebene den Erfolg. Die Workflow-Richtlinie der Gruppe wird ignoriert. Bei Rückgabe aus dem Setup-Handler der Aufgabe wird die Aufgabe nicht gestartet, ihr „done“-Handler wird nicht aufgerufen, und die Aufgabe meldet ihrem übergeordneten Element den Erfolg. |
QtTaskTree::SetupResult::StopWithError | 2 | Die Ausführung der Gruppe oder der Aufgabe wird sofort mit einem Fehler abgebrochen. Bei Rückgabe aus dem Setup-Handler der Gruppe werden alle untergeordneten Aufgaben übersprungen, und der onGroupDone()-Handler der Gruppe wird mit DoneWith::Error aufgerufen. Die Gruppe meldet ihrem übergeordneten Element einen Fehler. Die Workflow-Richtlinie der Gruppe wird ignoriert. Bei Rückkehr aus dem Setup-Handler der Aufgabe wird die Aufgabe nicht gestartet, ihr Fehlerhandler wird nicht aufgerufen, und die Aufgabe meldet einen Fehler an ihr übergeordnetes Element. |
[alias] QtTaskTree::TreeDoneHandler
Typalias für std::function<void(const QTaskTree &, QtTaskTree::DoneWith)>.
TreeDoneHandler ist ein optionales Argument der Funktionen von Task-Tree-Runner, die die Ausführung des Task-Trees planen. Die Funktion wird aufgerufen, wenn das Rezept des Task-Tree-Runners die Ausführung abgeschlossen hat. Der Zugriff auf QTaskTree und das Ergebnis des Rezepts erfolgt über die übergebenen Argumente.
Die Task-Tree-Runner akzeptieren auch Handler in einer verkürzten Form: „ std::function<void(const QTaskTree &)> “, „ std::function<void(QtTaskTree::DoneWith)> “ oder „ std::function<void(void)> “.
[alias] QtTaskTree::TreeSetupHandler
Typalias für std::function<void(QTaskTree &)>.
TreeSetupHandler ist ein optionales Argument der Funktionen von Task-Tree-Runner, die die Ausführung des Task-Trees planen. Die Funktion wird aufgerufen, wenn der Task-Tree-Runner im Begriff ist, sein Rezept auszuführen. Der Zugriff auf QTaskTree erfolgt über das übergebene Argument.
Die Task-Tree-Runner akzeptieren auch Handler in einer verkürzten Form von ` std::function<void(void)>`.
enum class QtTaskTree::WorkflowPolicy
Diese Enumeration beschreibt das mögliche Verhalten des „Group“-Elements, wenn eine untergeordnete Aufgabe einer beliebigen Gruppe ihre Ausführung beendet. Sie wird auch verwendet, wenn die laufende „Group“ abgebrochen wird.
| Konstante | Wert | Beschreibung |
|---|---|---|
QtTaskTree::WorkflowPolicy::StopOnError | 0 | Standard. Entspricht dem globalen Element „ stopOnError “. Wenn eine untergeordnete Aufgabe mit einem Fehler endet, wird die Gruppe angehalten und endet mit einem Fehler. Wenn alle untergeordneten Aufgaben erfolgreich beendet wurden, endet die Gruppe erfolgreich. Ist eine Gruppe leer, endet sie erfolgreich. |
QtTaskTree::WorkflowPolicy::ContinueOnError | 1 | Entspricht dem globalen Element „ continueOnError “. Ähnlich wie „ stopOnError “, jedoch wird im Falle eines Fehlers bei einem untergeordneten Element die Ausführung fortgesetzt, bis alle Aufgaben beendet sind, und die Gruppe meldet anschließend einen Fehler, selbst wenn einige andere Aufgaben in der Gruppe erfolgreich abgeschlossen wurden. Wenn alle untergeordneten Aufgaben erfolgreich abgeschlossen werden, wird die Gruppe erfolgreich beendet. Ist eine Gruppe leer, wird sie erfolgreich beendet. |
QtTaskTree::WorkflowPolicy::StopOnSuccess | 2 | Entspricht dem globalen Element „ stopOnSuccess “. Wenn mindestens eine untergeordnete Aufgabe erfolgreich abgeschlossen wird, wird die Gruppe beendet und mit Erfolg abgeschlossen. Wenn alle untergeordneten Aufgaben mit einem Fehler abgeschlossen wurden, wird die Gruppe mit einem Fehler abgeschlossen. Ist eine Gruppe leer, wird sie mit einem Fehler abgeschlossen. |
QtTaskTree::WorkflowPolicy::ContinueOnSuccess | 3 | Entspricht dem globalen Element „ continueOnSuccess “. Ähnlich wie bei „ stopOnSuccess “, jedoch wird die Ausführung, sobald eine untergeordnete Aufgabe erfolgreich abgeschlossen ist, fortgesetzt, bis alle Aufgaben beendet sind, und die Gruppe meldet anschließend einen Erfolg, selbst wenn einige andere Aufgaben in der Gruppe mit einem Fehler beendet wurden. Wenn alle untergeordneten Aufgaben mit einem Fehler beendet werden, wird die Gruppe mit einem Fehler beendet. Ist eine Gruppe leer, wird sie mit einem Fehler beendet. |
QtTaskTree::WorkflowPolicy::StopOnSuccessOrError | 4 | Entspricht dem globalen Element „ stopOnSuccessOrError “. Die Gruppe startet so viele Aufgaben, wie möglich. Sobald eine Aufgabe beendet ist, stoppt die Gruppe und meldet das Ergebnis der Aufgabe. Nur im Parallelmodus sinnvoll. Im sequenziellen Modus wird nur die erste Aufgabe gestartet, und wenn diese beendet ist, endet auch die Gruppe, sodass die anderen Aufgaben immer übersprungen werden. Ist eine Gruppe leer, endet sie mit einem Fehler. |
QtTaskTree::WorkflowPolicy::FinishAllAndSuccess | 5 | Entspricht dem globalen Element „ finishAllAndSuccess “. Die Gruppe führt alle Aufgaben aus und ignoriert deren Rückgabewerte. Wenn alle Aufgaben beendet sind, wird die Gruppe erfolgreich beendet. Ist eine Gruppe leer, wird sie erfolgreich beendet. |
QtTaskTree::WorkflowPolicy::FinishAllAndError | 6 | Entspricht dem globalen Element „ finishAllAndError “. Die Gruppe führt alle Aufgaben aus und ignoriert deren Rückgabewerte. Wenn alle Aufgaben beendet sind, wird die Gruppe mit einem Fehler beendet. Ist eine Gruppe leer, wird sie mit einem Fehler beendet. |
Immer wenn das Ergebnis einer untergeordneten Aufgabe dazu führt, dass die Gruppe angehalten wird, d. h. bei den Richtlinien „StopOnError“, „StopOnSuccess“ oder „StopOnSuccessOrError“, bricht die Gruppe die anderen laufenden untergeordneten Aufgaben ab (sofern vorhanden – beispielsweise im Parallelmodus) und überspringt die Ausführung von Aufgaben, die sie noch nicht gestartet hat (beispielsweise im sequenziellen Modus – jene, die nach der fehlgeschlagenen Aufgabe platziert sind). Sowohl das Abbrechen als auch das Überspringen von untergeordneten Aufgaben kann auftreten, wenn „ ParallelLimit “ verwendet wird.
Die folgende Tabelle fasst die Unterschiede zwischen den verschiedenen Workflow-Richtlinien zusammen:
| WorkflowPolicy | Führt alle untergeordneten Aufgaben aus | Ergebnis | Ergebnis, wenn die Gruppe leer ist |
|---|---|---|---|
| StopOnError | Hält an, wenn eine untergeordnete Aufgabe mit einem Fehler beendet wurde, und meldet einen Fehler | Ein Fehler, wenn mindestens eine untergeordnete Aufgabe fehlgeschlagen ist, andernfalls Erfolg | Erfolg |
| ContinueOnError | Ja | Ein Fehler, wenn mindestens eine untergeordnete Aufgabe fehlgeschlagen ist, andernfalls Erfolg | Erfolg |
| BeiErfolgStoppen | Hält an, sobald eine untergeordnete Aufgabe erfolgreich abgeschlossen wurde, und meldet Erfolg | Erfolg, wenn mindestens eine untergeordnete Aufgabe erfolgreich war; andernfalls ein Fehler | Ein Fehler |
| ContinueOnSuccess | Ja | Erfolg, wenn mindestens eine untergeordnete Aufgabe erfolgreich war, andernfalls ein Fehler | Ein Fehler |
| StopOnSuccessOrError | Stoppt, sobald eine untergeordnete Aufgabe beendet ist, und meldet das Ergebnis der untergeordneten Aufgabe | Erfolg oder ein Fehler, je nach Ergebnis der abgeschlossenen untergeordneten Aufgabe | Ein Fehler |
| FinishAllAndSuccess | Ja | Erfolg | Erfolg |
| FinishAllAndError | Ja | Ein Fehler | Ein Fehler |
Wenn ein untergeordnetes Element einer Gruppe ebenfalls eine Gruppe ist, führt die untergeordnete Gruppe ihre Aufgaben gemäß ihrer eigenen Workflow-Richtlinie aus. Wenn eine übergeordnete Gruppe die laufende untergeordnete Gruppe aufgrund ihrer eigenen Workflow-Richtlinie stoppt – das heißt, wenn für die übergeordnete Gruppe die Richtlinie „StopOnError“, „StopOnSuccess“ oder „StopOnSuccessOrError“ verwendet wurde –, wird das Ergebnis der untergeordneten Gruppe gemäß der Spalte „Ergebnis“ und der Zeile zur Workflow-Richtlinie der untergeordneten Gruppe in der obigen Tabelle gemeldet.
Variablendokumentation
const QtTaskTree::GroupItem QtTaskTree::continueOnError
Ein praktisches Element einer globalen Gruppe, das die Arbeitsablaufrichtlinie „ ContinueOnError “ beschreibt.
const QtTaskTree::GroupItem QtTaskTree::continueOnSuccess
Ein praktisches Element einer globalen Gruppe, das die Workflow-Richtlinie „ ContinueOnSuccess “ beschreibt.
const QtTaskTree::ExecutableItem QtTaskTree::errorItem
Ein praktisches globales ausführbares Element, das eine leere, fehlerhafte, synchrone Aufgabe enthält.
Dies ist in if-Anweisungen nützlich, um anzugeben, dass eine Verzweigung mit einem Fehler endet:
const ExecutableItem conditionalTask = ...;
Group group {
stopOnError,
If (conditionalTask) >> Then {
...
} >> Else {
errorItem
},
nextTask
};Im obigen Beispiel wird, falls die Aufgabe „ conditionalTask “ mit einem Fehler endet, der Zweig „ Else “ gewählt, der sofort mit einem Fehler endet. Dies führt dazu, dass die Aufgabe „ nextTask “ übersprungen wird (aufgrund der Workflow-Richtlinie „ stopOnError “ des group) und die Aufgabe „ group “ mit einem Fehler endet.
Siehe auch successItem.
const QtTaskTree::GroupItem QtTaskTree::finishAllAndError
Ein praktisches Element einer globalen Gruppe, das die Workflow-Richtlinie „ FinishAllAndError “ beschreibt.
const QtTaskTree::GroupItem QtTaskTree::finishAllAndSuccess
Ein praktisches Element einer globalen Gruppe, das die Workflow-Richtlinie „ FinishAllAndSuccess “ beschreibt.
const QtTaskTree::GroupItem QtTaskTree::nullItem
Ein praktisches Element einer globalen Gruppe, das ein No-Op-Element kennzeichnet.
Dies ist in bedingten Ausdrücken nützlich, um das Fehlen eines optionalen Elements anzuzeigen:
const ExecutableItem task = ...;
const std::optional<ExecutableItem> optionalTask = ...;
Group group {
task,
optionalTask ? *optionalTask : nullItem
};const QtTaskTree::ExecutionMode QtTaskTree::parallel
Ein praktisches Element einer globalen Gruppe, das den parallelen Ausführungsmodus beschreibt.
Alle direkten untergeordneten Aufgaben einer Gruppe werden nach dem Start der Gruppe gestartet, ohne auf den Abschluss der vorherigen untergeordneten Aufgaben zu warten. In diesem Modus laufen alle untergeordneten Aufgaben gleichzeitig.
Siehe auch sequential und ParallelLimit.
const QtTaskTree::ExecutionMode QtTaskTree::parallelIdealThreadCountLimit
Ein praktisches Element einer globalen Gruppe, das den parallelen Ausführungsmodus mit einer begrenzten Anzahl gleichzeitig ausgeführter Aufgaben beschreibt. Die Obergrenze entspricht der idealen Anzahl von Threads ohne den aufrufenden Thread.
Dies entspricht:
Siehe auch parallel und ParallelLimit.
const QtTaskTree::ExecutionMode QtTaskTree::sequential
Ein praktisches Element der globalen Gruppe, das den sequenziellen Ausführungsmodus beschreibt.
Dies ist der Standardausführungsmodus des „Group“-Elements.
Wenn für eine Gruppe kein Ausführungsmodus festgelegt ist, wird sie im sequenziellen Modus ausgeführt. Alle direkten untergeordneten Aufgaben einer Gruppe werden in einer Kette gestartet, sodass nach Beendigung einer Aufgabe die nächste startet. Auf diese Weise können Sie die Ergebnisse der vorherigen Aufgabe als Eingabe an die nächste Aufgabe übergeben, bevor diese startet. Dieser Modus gewährleistet, dass die nächste Aufgabe erst gestartet wird, nachdem die vorherige Aufgabe beendet ist.
Siehe auch parallel und ParallelLimit.
const QtTaskTree::GroupItem QtTaskTree::stopOnError
Ein praktisches Element der globalen Gruppe, das die Workflow-Richtlinie „ StopOnError “ beschreibt.
Dies ist die Standard-Workflow-Richtlinie des Gruppenelements.
const QtTaskTree::GroupItem QtTaskTree::stopOnSuccess
Ein praktisches Element einer globalen Gruppe, das die Workflow-Richtlinie „ StopOnSuccess “ beschreibt.
const QtTaskTree::GroupItem QtTaskTree::stopOnSuccessOrError
Ein praktisches Element einer globalen Gruppe, das die Workflow-Richtlinie „ StopOnSuccessOrError “ beschreibt.
const QtTaskTree::ExecutableItem QtTaskTree::successItem
Ein praktisches, global verfügbares ausführbares Element, das eine leere, erfolgreich ausgeführte, synchrone Aufgabe enthält.
Dies ist in if-Anweisungen nützlich, um anzugeben, dass eine Verzweigung erfolgreich endet:
const ExecutableItem conditionalTask = ...;
const Group group {
stopOnSuccess,
If (conditionalTask) >> Then {
...
} >> Else {
successItem
},
nextTask
};Im obigen Beispiel wird, falls die Aufgabe „ conditionalTask “ mit einem Fehler endet, der Zweig „ Else “ gewählt, der sofort erfolgreich abgeschlossen wird. Dies führt dazu, dass die Aufgabe „ nextTask “ übersprungen wird (aufgrund der Workflow-Richtlinie „ stopOnSuccess “ des group) und die Aufgabe „ group “ erfolgreich abgeschlossen wird.
Siehe auch errorItem.
Funktionsdokumentation
QtTaskTree::ExecutableItem QtTaskTree::barrierAwaiterTask(const QtTaskTree::QStoredBarrier &storedBarrier)
Gibt die „Awaiter“-Aufgabe zurück, die beendet wird, sobald die übergebene „ storedBarrier “ beendet ist.
Hinweis: Das übergebene ` storedBarrier ` muss im selben Rezept als gleichrangiges Element neben der zurückgegebenen Aufgabe oder in einem übergeordneten ` Group` platziert werden; andernfalls kann es zu einem Absturz kommen.
template <typename Signal> QtTaskTree::ObjectSignal<std::decay_t<Signal>> QtTaskTree::makeObjectSignal(typename QtPrivate::FunctionPointer<Signal>::Object *object, Signal &&signal)
Eine praktische Funktion zum Erstellen von „ ObjectSignal “ innerhalb der Funktion „ ObjectSignalGetter “, die an „ ExecutableItem::withCancel()“ oder „ ExecutableItem::withAccept()“ übergeben wird. Übergeben Sie ein „ object “ und dessen „ signal “, um eine Instanz der Struktur „ ObjectSignal “ zu erstellen.
Siehe auch „ ObjectSignal“ , „ ExecutableItem::withCancel()“ und „ ExecutableItem::withAccept()“.
template <typename Handler> QtTaskTree::GroupItem QtTaskTree::onGroupDone(Handler &&handler, QtTaskTree::CallDone callDone = CallDoneFlag::Always)
Erstellt ein Gruppenelement, das den „Group Done“-Handler enthält. Standardmäßig wird der „ handler “ aufgerufen, sobald die Gruppe abgeschlossen ist. Übergeben Sie einen vom Standard abweichenden Wert für das Argument „ callDone “, wenn der Handler nur bei erfolgreicher, fehlgeschlagener oder abgebrochener Ausführung aufgerufen werden soll. Je nach Workflow-Richtlinie der Gruppe kann dieser Handler auch aufgerufen werden, wenn die laufende Gruppe abgebrochen wird (z. B. wenn das Element „ stopOnError “ verwendet wurde).
Der übergebene ` handler ` ist vom Typ ` std::function<DoneResult(DoneWith)> `. Optional kann entweder der Rückgabetyp ` DoneResult ` oder der Argumenttyp ` DoneWith ` weggelassen werden (d. h., der Rückgabetyp kann ` void` sein). Weitere Informationen zu möglichen Handler-Typen finden Sie unter GroupItem::GroupDoneHandler.
Wenn der „ handler “ aufgerufen wird, sind alle untergeordneten Aufgaben der Gruppe bereits abgeschlossen.
Enthält eine Gruppe „Storage“-Elemente, wird die Funktion „ handler “ aufgerufen, bevor die Speicher destrukturiert werden, sodass die Funktion „ handler “ noch ein letztes Mal die Daten der aktiven Speicher auslesen kann.
Siehe auch „ GroupItem::GroupDoneHandler “ und „ onGroupSetup()“.
template <typename Handler> QtTaskTree::GroupItem QtTaskTree::onGroupSetup(Handler &&handler)
Erstellt ein Gruppenelement, das den Handler für die Gruppeneinrichtung enthält. Der „ handler “ wird bei jedem Start der Gruppe aufgerufen.
Der übergebene „ handler “ ist entweder vom Typ „ std::function<SetupResult()> “ oder „ std::function<void()> “. Weitere Informationen zu den möglichen Handler-Typen finden Sie unter GroupItem::GroupSetupHandler.
Wenn die Funktion „ handler “ aufgerufen wird, läuft noch keine der untergeordneten Aufgaben der Gruppe.
Enthält eine Gruppe „Storage“-Elemente, wird die Methode „ handler “ nach dem Aufbau der Speicher aufgerufen, sodass die Methode „ handler “ möglicherweise bereits einige anfängliche Änderungen an den aktiven Speichern vorgenommen hat.
Siehe auch „ GroupItem::GroupSetupHandler “ und „ onGroupDone “ ().
template <typename Signal> QtTaskTree::ExecutableItem QtTaskTree::signalAwaiterTask(const typename QtPrivate::FunctionPointer<Signal>::Object *sender, Signal signal)
Gibt die Awaiter-Aufgabe zurück, die beendet wird, sobald die übergebene ` sender ` die ` signal` auslöst.
Hinweis: Die Verbindung zu den übergebenen „ sender “ und „ signal “ wird nicht bei der Erstellung der zurückgegebenen Aufgabe oder beim Einfügen in ein Rezept hergestellt, sondern erst, wenn die Aufgabe durch „ QTaskTree “ gestartet wird. Stellen Sie sicher, dass die übergebene „ sender “ länger besteht als jeder laufende Aufgabenbaum, der die zurückgegebene Aufgabe enthält. Wurde das „ signal “ vor dem Start der Aufgabe ausgegeben, d. h. bevor die Verbindung hergestellt wurde, wird die Aufgabe bei der ersten Ausgabe des „ signal “ nach dem Start der Aufgabe beendet.
QtTaskTree::ExecutableItem QtTaskTree::timeoutTask(const std::chrono::milliseconds &timeout, QtTaskTree::DoneResult result = DoneResult::Error)
Erstellt „ QTimeoutTask “ mit der Dauer „ timeout “, woraufhin die Aufgabe mit „ result “ abgeschlossen wird.
Siehe auch „ QTimeoutTask “.
QtTaskTree::GroupItem QtTaskTree::workflowPolicy(QtTaskTree::WorkflowPolicy policy)
Erstellt das Element „ workflow policy “ einer Gruppe für eine angegebene „ policy “.
Der Einfachheit halber können stattdessen globale Elemente verwendet werden.
Siehe auch „ stopOnError“ , „ continueOnError “, „ stopOnSuccess “, „ continueOnSuccess “, „ stopOnSuccessOrError “, „ finishAllAndSuccess “, „ finishAllAndError “ und „ WorkflowPolicy “.
© 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.