QtTaskTree::When Class
class QtTaskTree::WhenEin Element, das die Ausführung eines Hauptteils bis zum Erreichen einer Barriere verzögert. Mehr...
| Überschrift: | #include <qbarriertask.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS TaskTree) target_link_libraries(mytarget PRIVATE Qt6::TaskTree) |
| qmake: | QT += tasktree |
| Seit: | Qt 6.11 |
| Status: | Technologievorschau |
Diese Klasse befindet sich in der Technologievorschau und kann sich noch ändern.
Hinweis: Alle Funktionen dieser Klasse sind reentrant.
Öffentliche Funktionen
| When(const QtTaskTree::BarrierKickerGetter &kicker, QtTaskTree::WorkflowPolicy policy = WorkflowPolicy::StopOnError) | |
| When(const QtTaskTree::QCustomTask<Task, Adapter, Deleter> &customTask, Signal signal, QtTaskTree::WorkflowPolicy policy = QtTaskTree::WorkflowPolicy::StopOnError) | |
| When(QtTaskTree::When &&other) |
Ausführliche Beschreibung
„When“ wird verwendet, um die Ausführung eines „ Do “-Körpers zu verzögern, bis das zugehörige „ QStoredBarrier “ fortgesetzt wird oder bis das Signal von „ QCustomTask “ ausgegeben wird. Es wird in Verbindung mit einem „ Do “-Element wie folgt verwendet: „ When () >> Do {} “.
Siehe auch Do.
Dokumentation der Member-Funktionen
[explicit] When::When(const QtTaskTree::BarrierKickerGetter &kicker, QtTaskTree::WorkflowPolicy policy = WorkflowPolicy::StopOnError)
Erstellt ein Verzögerungselement, das „ kicker “ als Eingabe und „ ExecutableItem “ als Rückgabe verwendet, um parallel zum „ Do “-Körper ausgeführt zu werden. Der „ Do “-Körper wird verzögert, bis der an „ kicker “ übergebene „ QStoredBarrier “ weitergeleitet wird. Der von „ kicker “ zurückgegebene „ ExecutableItem “ und der „ Do “-Körper werden parallel unter Verwendung von „ policy “ ausgeführt.
Wenn Sie beispielsweise die Ausführung der nachfolgenden Aufgaben verzögern möchten, bis das „ QProcess “ gestartet ist, könnte das Rezept wie folgt aussehen:
const auto kicker = [](const QStoredBarrier &barrier) {
const auto onSetup = [barrier](QProcess &process) {
QObject::connect(&process, &QProcess::started, barrier.activeStorage(), &QBarrier::advance);
... // Setup process program, arguments, environment, etc...
};
return QProcessTask(onSetup);
};
const Group recipe {
When (kicker) >> Do {
delayedTask1,
...
}
};Wenn das obige Rezept ausgeführt wird, führt der „ QTaskTree “ einen „ QProcessTask “ parallel zu einem „ Do “-Körper aus. Ein „ Do “-Körper wird zunächst angehalten – er wird fortgesetzt, sobald die an den „Kicker“ übergebene Barriere vorrückt. Dies geschieht, sobald der „ QProcess “ gestartet wird. Von diesem Zeitpunkt an läuft der „ QProcess “ parallel zum „ Do “-Körper.
Siehe auch Do.
[explicit] template <
typename Task,
typename Adapter,
typename Deleter,
typename Signal
>
When::When(const QtTaskTree::QCustomTask<Task, Adapter, Deleter> &customTask, Signal signal, QtTaskTree::WorkflowPolicy policy = QtTaskTree::WorkflowPolicy::StopOnError)
Erstellt ein Verzögerungselement, das „ customTask “ und dessen „ Task “ sowie „ signal “ verwendet, um diese parallel mit einem „ Do “-Körper auszuführen. Der „ Do “-Körper wird verzögert, bis der „ Task “-Körper „ signal “ ausgibt. Der „ customTask “-Körper und der „ Do “-Körper werden mithilfe von „ policy “ parallel ausgeführt.
Der Code aus dem Konstruktor des anderen `When` könnte wie folgt vereinfacht werden:
const auto onSetup = [barrier](QProcess &process) {
... // Setup process program, arguments, environment, etc...
};
const Group recipe {
When (QProcessTask(onSetup), &QProcess::started) >> Do {
delayedTask1,
...
}
};Hinweis: Der Typ „ Task “ des übergebenen „ customTask “ muss von „ QObject “ abgeleitet sein.
Siehe auch ` Do`.
[constexpr noexcept default] When::When(QtTaskTree::When &&other)
Erzeugt eine Instanz von „ When “.
© 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.