QtTaskTree::ExecutableItem Class
class QtTaskTree::ExecutableItem実行可能なタスク項目の基底クラス。詳細...
| ヘッダー: | #include <qtasktree.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS TaskTree) target_link_libraries(mytarget PRIVATE Qt6::TaskTree) |
| qmake: | QT += tasktree |
| 以下のように: | Qt 6.11 |
| 継承元: | QtTaskTree::GroupItem |
| 継承元: | QtTaskTree::Forever、QtTaskTree::Group 、QtTaskTree::QCustomTask 、およびQtTaskTree::QSyncTask |
| ステータス: | テクノロジープレビュー |
このクラスはテクノロジープレビュー段階にあり、変更される可能性があります。
注:このクラスのすべての関数は再入可能です。
パブリック関数
| QtTaskTree::Group | withAccept(ObjectSignalGetter &&getter) const |
| QtTaskTree::Group | withCancel(ObjectSignalGetter &&getter, std::initializer_list<QtTaskTree::GroupItem> postCancelRecipe = {}) const |
| QtTaskTree::Group | withLog(const QString &logName) const |
| QtTaskTree::Group | withTimeout(std::chrono::milliseconds timeout, const std::function<void ()> &handler = {}) const |
関連する非メンバー
| QtTaskTree::Group | operator!(const QtTaskTree::ExecutableItem &item) |
| QtTaskTree::Group | operator&&(const QtTaskTree::ExecutableItem &first, const QtTaskTree::ExecutableItem &second) |
| QtTaskTree::Group | operator&&(const QtTaskTree::ExecutableItem &item, QtTaskTree::DoneResult result) |
| QtTaskTree::Group | operator||(const QtTaskTree::ExecutableItem &first, const QtTaskTree::ExecutableItem &second) |
| QtTaskTree::Group | operator||(const QtTaskTree::ExecutableItem &item, QtTaskTree::DoneResult result) |
詳細な説明
ExecutableItem は、実行可能なタスクを含むアイテムに対する追加のインターフェースを提供します。withTimeout() を使用して、タスクにタイムアウトを設定します。withLog() を使用して、タスクの起動および実行結果に関するデバッグ情報を含めます。
メンバー関数のドキュメント
template <typename ObjectSignalGetter> QtTaskTree::Group ExecutableItem::withAccept(ObjectSignalGetter &&getter) const
this ExecutableItem のコピーを、シグナル・アウェイタと組み合わせて返します。渡されるgetter は、エミッタとその待機中のシグナルを表すObjectSignal を返す関数です。getter 内でmakeObjectSignal() を使用して、ObjectSignal オブジェクトを作成してください。
this ExecutableItem がエラーで終了した場合、返されるGroup は、アウェイタのシグナルを待機することなく、直ちにエラーで終了します。
this ExecutableItem が正常に終了した場合、返されたGroup は直ちに終了せず、待機中のシグナルが送信されるのを待ちます。待機中のシグナルが送信されると、返されたGroup は正常に終了します。this ExecutableItem が終了する前に待機中のシグナルが送信された場合、待機フェーズはスキップされ、返されたGroup は同期的に終了します。
待機対象のシグナルへの接続は、this ExecutableItem の実行が開始されようとする際に確立されます。待機対象のシグナルがそれ以前にトリガーされていた場合でも、this ExecutableItem の実行が開始された後は、その事実は認識されません。
template <typename ObjectSignalGetter> QtTaskTree::Group ExecutableItem::withCancel(ObjectSignalGetter &&getter, std::initializer_list<QtTaskTree::GroupItem> postCancelRecipe = {}) const
this ExecutableItem のコピーをキャンセル可能にします。引数として渡されるgetter は、エミッタとそのキャンセル信号を記述するObjectSignal を返す関数です。getter 内でmakeObjectSignal() を使用して、ObjectSignal オブジェクトを作成します。キャンセル信号が発行されると、this ExecutableItem はキャンセルされ、オプションで指定されたpostCancelRecipe が実行され、返された Group はエラー状態で終了します。
this ExecutableItem がキャンセル信号が発信される前に終了した場合、返される Group は、this ExecutableItem が終了したのと同じ結果で直ちに終了します。この場合、オプションで指定されたpostCancelRecipe はスキップされます。
キャンセル信号への接続は、this ExecutableItem が開始されようとしている時点で確立されます。以前にキャンセル信号がトリガーされていた場合、this ExecutableItem が開始された後は、その事実は認識されません。
QtTaskTree::Group ExecutableItem::withLog(const QString &logName) const
this ExecutableItem のコピーに、タスクの起動時およびタスク終了後に発行されるカスタムデバッグ出力情報を添付し、結合された項目を返します。
デバッグ出力には、イベント(開始または終了)のタイムスタンプと、デバッグログ内で特定のタスクを識別するためのlogName が含まれます。
終了時の出力には、実行が同期的か非同期的か、その結果(DoneWith 列挙型で記述される値)、および合計実行時間(ミリ秒単位)といった追加情報が含まれます。
QtTaskTree::Group ExecutableItem::withTimeout(std::chrono::milliseconds timeout, const std::function<void ()> &handler = {}) const
QTimeoutTask を、this ExecutableItem のコピーに結合します。この結合は、timeout からミリ秒単位で経過した時点、およびオプションで指定されたタイムアウトhandler に基づいて行われ、結合されたアイテムを返します。
ExecutableItem がtimeout が経過する前に完了した場合、返されるアイテムはタスクの結果と共に直ちに完了します。それ以外の場合、handler が呼び出され(指定されている場合)、タスクはキャンセルされ、返されるアイテムはエラーと共に完了します。
関連する非メンバー
QtTaskTree::Group operator!(const QtTaskTree::ExecutableItem &item)
「item 」のDoneResult を反転させたGroupを返します。
item がDoneResult::Success を報告する場合、返される項目はDoneResult::Error を報告します。item がDoneResult::Error を報告する場合、返される項目はDoneResult::Success を報告します。
返される項目は、以下と同等です:
Group {
item,
onGroupDone([](DoneWith doneWith) { return toDoneResult(doneWith == DoneWith::Error); })
}operator&&() およびoperator||()も参照してください 。
QtTaskTree::Group operator&&(const QtTaskTree::ExecutableItem &first, const QtTaskTree::ExecutableItem &second)
first およびsecond タスクを「conjunction」で結合したグループを返します。
first タスクとsecond タスクは、両方とも順次実行されます。両方のタスクがDoneResult::Success を報告した場合、返される項目はDoneResult::Success を報告します。それ以外の場合は、返される項目はDoneResult::Error を報告します。
返される項目はショートサーキット評価を行います。つまり、first タスクがDoneResult::Error を報告した場合、second タスクはスキップされ、返される項目は直ちにDoneResult::Error を報告します。
返される結果は、以下と同等です:
Group { stopOnError, first, second }注: 短絡評価による結合の並列 実行は、次のコードで実現できます:Group { parallel, stopOnError, first, second } 。この場合、最初に完了したタスクがDoneResult::Error を報告すると、もう一方のタスクはキャンセルされ、グループは直ちにDoneResult::Error を報告します。
operator||() およびoperator!()も参照してください 。
QtTaskTree::Group operator&&(const QtTaskTree::ExecutableItem &item, QtTaskTree::DoneResult result)
result がDoneResult::Success の場合、item タスクを返します。それ以外の場合は、doneの結果がDoneResult::Error に調整されたitem タスクを返します。
task && DoneResult::Error は、タスクのdone結果を無条件にDoneResult::Error に調整することと同等です。
この関数は、ExecutableItem::operator&&() をオーバーロードしています。
QtTaskTree::Group operator||(const QtTaskTree::ExecutableItem &first, const QtTaskTree::ExecutableItem &second)
first およびsecond のタスクを排他的論理和で結合したグループを返します。
first およびsecond の両タスクは順次実行されます。両方のタスクがDoneResult::Error を報告した場合、返される項目はDoneResult::Error を報告します。それ以外の場合は、返される項目はDoneResult::Success を報告します。
返される項目はショートサーキット評価を行います。つまり、first タスクがDoneResult::Success を報告した場合、second タスクはスキップされ、返される項目は直ちにDoneResult::Success を報告します。
返される結果は、以下と同等です:
Group { stopOnSuccess, first, second }注: 短絡評価による排他的論理和の並列 実行は、次のコードで実現できます:Group { parallel, stopOnSuccess, first, second } 。この場合、最初に完了したタスクがDoneResult::Success を報告すると、もう一方のタスクはキャンセルされ、グループは直ちにDoneResult::Success を報告します。
operator&&() およびoperator!()も参照してください 。
QtTaskTree::Group operator||(const QtTaskTree::ExecutableItem &item, QtTaskTree::DoneResult result)
result がDoneResult::Error の場合、item タスクを返します。それ以外の場合は、doneの結果をDoneResult::Success に調整したitem タスクを返します。
task || DoneResult::Success は、タスクのdone結果を無条件にDoneResult::Success に調整することと同等です。
この関数は、ExecutableItem::operator||() をオーバーロードしています。
© 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.