このページでは

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 を返す関数です。ObjectSignal オブジェクトを作成するには、getter 内でmakeObjectSignal() を使用します。

this ExecutableItem がエラーで終了した場合、返されたGroup は、awaiter のシグナルを待たずに、直ちにエラーで終了します。

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 を返す関数です。ObjectSignal オブジェクトを作成するには、getter 内でmakeObjectSignal() を使用します。キャンセルシグナルが発せられると、this ExecutableItem がキャンセルされ、オプションで提供されるpostCancelRecipe が実行され、return Group はエラーで終了する。

キャンセルシグナルが発せられる前にthis ExecutableItem が終了すると、返された Group はthis ExecutableItem が終了したのと同じ結果で直ちに終了する。この場合、オプションで提供されるpostCancelRecipe はスキップされる。

キャンセルシグナルへの接続は、this ExecutableItem が開始されようとするときに確立される。this ExecutableItem が開始された後、キャンセルシグナルが以前にトリガーされた場合、このことに気づくことはない。

QtTaskTree::Group ExecutableItem::withLog(const QString &logName) const

タスク起動時とタスク終了後に発行されるthis ExecutableItem のコピーにカスタムデバッグプリントアウトをアタッチし、結合されたアイテムを返す。

デバッグ・プリントアウトには、イベントのタイムスタンプ (開始または終了) と、デバッグ・ログで特定のタスクを識別するためのlogName が含まれます。

finish printout には、実行が同期か非同期か、その結果(DoneWith enum で記述された値)、およびミリ秒単位の総実行時間という追加情報が含まれます。

QtTaskTree::Group ExecutableItem::withTimeout(std::chrono::milliseconds timeout, const std::function<void ()> &handler = {}) const

this ExecutableItem のコピーにQTimeoutTask をアタッチし、timeout の後にミリ秒単位で経過し、オプションで提供されるタイムアウトhandler で、結合されたアイテムを返す。

timeout が通過する前にExecutableItem が終了すると、返されたアイテムはタスクの結果と共に直ちに終了する。そうでない場合、handler が呼び出され (指定された場合)、タスクはキャンセルされ、返されたアイテムはエラーで終了します。

関連する非会員

QtTaskTree::Group operator!(const QtTaskTree::ExecutableItem &item)

itemDoneResult を否定した Group を返す。

itemDoneResult::Success を報告している場合、返された項目はDoneResult::Error を報告します。itemDoneResult::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)

firstsecond タスクが連結でマージされたグループを返す。

firstsecond の両方のタスクが順番に実行される。両方のタスクが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)

resultDoneResult::Success の場合、item タスクを返す。そうでない場合、item タスクの done 結果をDoneResult::Error に微調整したものを返す。

task && DoneResult::Error は、タスクのdone結果を無条件にDoneResult::Error に微調整するのと等価である。

この関数はExecutableItem::operator&&() をオーバーロードしている。

QtTaskTree::Group operator||(const QtTaskTree::ExecutableItem &first, const QtTaskTree::ExecutableItem &second)

firstsecond タスクが disjunction でマージされた Group を返す。

firstsecond の両方のタスクが順番に実行される。両方のタスクが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)

resultDoneResult::Error の場合、item タスクを返す。そうでない場合、item タスクの done 結果をDoneResult::Success に微調整したものを返す。

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.