在本页

QtTaskTree::If Class

class QtTaskTree::If

条件表达式中使用的 "if "元素。更多

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

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

公共函数

If(const QtTaskTree::ExecutableItem &condition)
If(Handler &&handler)

详细说明

条件表达式的初始条件元素。其后必须始终有Then 元素。

TaskTree 模块中的条件表达式可以异步方式处理分支条件及其主体。例如

const Group recipe {
    If (conditionTask1) >> Then {
        bodyTask1
    } >> ElseIf (conditionTask2) >> Then {
        bodyTask2
    } >> Else {
        bodyTask3
    }
};

使用QTaskTree 运行上述配方时,任务树首先启动异步conditionTask1 。完成后,根据结果,任务树可能会在conditionTask1 成功完成后执行bodyTask1 ,或者通过执行conditionTask2 来分派另一个条件。如果执行了bodyTask1 ,则不会执行其他任务,而bodyTask1 的结果就是整个条件表达式的最终结果。

另请参阅 Then,Else, 和ElseIf

成员函数文档

[explicit] If::If(const QtTaskTree::ExecutableItem &condition)

condition 任务创建初始条件元素,用于条件表达式。运行中的QTaskTree 会首先执行传入的condition ,执行完毕后,要么执行Then 分支(成功时),要么执行Else 分支或ElseIf 条件。

传入的condition 可以由Group 元素括起来的多个任务组成,也可以是这些任务的连接词或析取词,如

const Group subRecipe {
    parallel,
    parallelConditionTask1,
    parallelConditionTask2
};

const Group recipe {
    If (conditionTask1 && !conditionTask2) >> Then {
        bodyTask1
    } >> ElseIf (subRecipe) >> Then {
        bodyTask2
    } >> Else {
        bodyTask3
    }
};

[explicit] template <typename Handler, std::enable_if_t<!std::is_base_of_v<ExecutableItem, std::decay_t<Handler>>, bool> = true> If::If(Handler &&handler)

一个辅助构造函数,接受运行中的QTaskTree 在评估初始条件时要执行的同步handler

这是一个快捷方式:

If (QSyncTask(handler))

有关可接受的处理程序类型的更多信息,请参见QSyncTask

这是一个重载函数。

另请参见 QSyncTaskElseIf

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