在本页

QtTaskTree::When Class

class QtTaskTree::When

延迟执行正文的元素,直到障碍物前进。更多

头文件: #include <qbarriertask.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS TaskTree)
target_link_libraries(mytarget PRIVATE Qt6::TaskTree)
qmake: QT += tasktree
Qt 6.11

注意:该类中的所有函数都是可重入的

公共函数

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)
QtTaskTree::Group operator>>(const QtTaskTree::When &whenItem, const QtTaskTree::Do &doItem)

详细说明

When 用于延迟Do 主体的执行,直到相关的QStoredBarrier 被推进或QCustomTask 的信号被发出。它与Do 元素结合使用,如:When () >> Do {}.

另请参阅 Do

成员函数文档

[explicit] When::When(const QtTaskTree::BarrierKickerGetter &kicker, QtTaskTree::WorkflowPolicy policy = WorkflowPolicy::StopOnError)

创建一个延迟元素,将kicker 返回ExecutableItem ,与Do 主体并行运行。Do 主体被延迟,直到传递给kickerQStoredBarrier 提前。由kicker 返回的ExecutableItemDo 主体将使用policy 并行运行。

例如,如果要延迟执行后续任务,直到QProcess 启动,则配方可以如下所示:

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,
        ...
    }
};

执行上述配方时,QTaskTreeDo 主体并行运行QProcessTaskDo 主体最初处于搁置状态--它将在传递给踢脚线的障碍物前进后继续执行。这将在QProcess 启动后立即发生。此后,QProcessDo 主体并行运行。

另请参阅 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)

创建一个延迟元素,将customTask 及其Task'signalDo 主体并行运行。Do 主体将延迟至Tasksignal 发布。customTaskDo 主体将使用policy 并行运行。

另一个 When 的构造函数的代码可简化为

const auto onSetup = [barrier](QProcess &process) {
    ... // Setup process program, arguments, environment, etc...
};

const Group recipe {
    When (QProcessTask(onSetup), &QProcess::started) >> Do {
        delayedTask1,
        ...
    }
};

注意: 传递的customTaskTask 类型需要从QObject 派生。

另请参见 Do

相关非成员

QtTaskTree::Group operator>>(const QtTaskTree::When &whenItem, const QtTaskTree::Do &doItem)

whenItemdoItem 主体结合,并返回Group ,以便在任务树配方中使用。

© 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.