このページでは

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)
If(QtTaskTree::If &&other)

詳細な説明

条件式の初期条件要素。その後に必ず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 を参照してください。

これはオーバーロードされた関数です。

QSyncTask およびElseIfも参照してください 。

[constexpr noexcept default] If::If(QtTaskTree::If &&other)

If のインスタンスをmove-constructで生成します。

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