QtTaskTree::GroupItem Class
class QtTaskTree::GroupItemGroupItemは、任意のGroup を構成する基本要素を表します。詳細...
| ヘッダー: | #include <qtasktree.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS TaskTree) target_link_libraries(mytarget PRIVATE Qt6::TaskTree) |
| qmake: | QT += tasktree |
| 以下のように: | Qt 6.11 |
| 継承元: | |
| ステータス: | テクノロジープレビュー |
このクラスはテクノロジープレビュー段階にあり、変更される可能性があります。
注:このクラスのすべての関数は再入可能です。
パブリック型
パブリック関数
| GroupItem(const QtTaskTree::GroupItems &children) | |
| GroupItem(const QtTaskTree::Storage<StorageStruct> &storage) | |
| GroupItem(std::initializer_list<QtTaskTree::GroupItem> children) | |
| GroupItem(QtTaskTree::GroupItem &&other) |
詳細な説明
GroupItem は、あらゆるGroup の一部となり得る基本要素です。これは、GroupItem のサブクラスが提供する機能をカプセル化しています。これは値型であり、たとえサブクラスのコンストラクタを介して最初に作成された場合でも、GroupItem インスタンスをコピーしても安全です。
GroupItem には主に 4 種類があります:
| GroupItem 種類 | 概要 |
|---|---|
| QCustomTask | 非同期タスクの型、およびタスクの開始、完了、エラーハンドラを定義します。QThreadFunctionTask<ResultType> やQNetworkReplyWrapperTask など、一意のタスク名で別名指定されます。非同期タスクは、タスクツリーを使用する主な理由です。 |
| Group | 他のグループアイテムを格納するためのコンテナです。グループは GroupItem 型であるため、別のグループ内にネストすることが可能です。親グループからは、このグループは単一の非同期タスクとして認識されます。 |
| xml-ph-0000@deepl.internalを含むGroupItemStorage | グループの子タスク間でデータを交換できるようにします。Storage を含む GroupItem がグループ内に配置されると、タスクツリーはグループに入る直前にストレージのデータオブジェクトをインスタンス化し、グループを離れる直後にそれを破棄します。 |
| その他のグループ制御項目 | ExecutionMode または `workflowPolicy()` によって返される項目は、グループの動作に影響を与えます。`onGroupSetup()` または `onGroupDone()` によって返される項目は、グループの実行開始時または終了時に呼び出されるカスタムハンドラを定義します。 |
メンバ型のドキュメント
[alias] GroupItem::GroupDoneHandler
std::function<DoneResult(DoneWith)> またはDoneResult の型エイリアス。
GroupDoneHandler は、onGroupDone() 要素の引数です。上記のシグネチャを持つ関数は、グループ完了ハンドラとして渡されると、グループの実行が終了した際に実行中のタスクツリーによって呼び出されます。
DoneWith 引数はオプションであり、完了ハンドラではこれを省略することも可能です。指定された場合、この引数には、親に報告されるグループの最終結果に関する情報が格納されます。
返されるDoneResult の値はオプションであり、ハンドラは代わりにvoid を返すこともできます。この場合、グループの最終結果はDoneWith 引数で指定された値と同じになります。ハンドラがDoneResult 値を返した場合、グループの最終結果は、doneハンドラの本体内で返された値によって調整される可能性があります。
DoneResult 型のGroupDoneHandlerの場合、追加の処理は実行されず、グループのワークフローポリシーを無視して、渡されたDoneResult の値でグループは無条件に終了します。
onGroupDone()、GroupSetupHandler 、およびQCustomTask::TaskDoneHandlerも参照してください 。
[alias] GroupItem::GroupSetupHandler
std::function<SetupResult()> の型エイリアス。
GroupSetupHandler は、onGroupSetup() 要素の引数です。上記のシグネチャを持つ関数は、グループセットアップハンドラとして渡されると、グループの実行が開始された際に実行中のタスクツリーによって呼び出されます。
ハンドラの戻り値は、ハンドラの呼び出しが終了した後、実行中のグループがどのように処理を進めるべきかを指示します。SetupResult::Continue のデフォルトの戻り値は、グループに実行を継続するよう指示します。つまり、子タスクの実行を開始します。SetupResult::StopWithSuccess またはSetupResult::StopWithError の戻り値は、グループに対し、子タスクの実行をスキップし、それぞれ正常終了またはエラーで直ちに終了するよう指示します。
戻り値がSetupResult::StopWithSuccess またはSetupResult::StopWithError のいずれかである場合、直後にグループの done ハンドラ(指定されている場合)が同期的に呼び出されます。
注: グループのセットアップ・ハンドラが `StopWithSuccess ` または `StopWithError` を返した場合でも 、グループの done ハンドラは呼び出されます。この動作はタスクの done ハンドラの動作とは異なり、将来変更される可能性があります。
onGroupSetup() 要素は、std::function<void()> という短縮形式の関数も受け付けます。つまり、戻り値はvoid となります。この場合、戻り値はSetupResult::Continue であるとみなされます。
onGroupSetup()、GroupDoneHandler 、およびQCustomTask::TaskSetupHandlerも参照してください 。
メンバ関数のドキュメント
GroupItem::GroupItem(const QtTaskTree::GroupItems &children)
指定されたchildren のリストを用いて、GroupItem要素を生成します。
この GroupItem 要素がQTaskTree によって解析されると、単にそのchildren に置き換えられます。
このコンストラクタは、GroupItem要素のリストを使用してGroup 要素を構築する場合に便利です。
static GroupItems getItems();
...
const Group root {
parallel,
finishAllAndSuccess,
getItems(), // GroupItems list is wrapped into a single GroupItem element
onGroupSetup(...),
onGroupDone(...)
};サブツリーを作成したい場合は、代わりにGroup を使用してください。
注: この GroupItem をGroup 要素と混同しないでください 。Group はタスクツリーによって解析された後も子要素をネストした状態を維持しますが、この GroupItem ではそうならないためです。
「Group」も参照してください 。
template <typename StorageStruct> GroupItem::GroupItem(const QtTaskTree::Storage<StorageStruct> &storage)
storage オブジェクトを保持するGroupItem要素を作成します。
このGroupItem を含むGroup 要素に、実行中のタスクツリーが進入すると、StorageStruct のインスタンスが動的に作成されます。
そのグループの実行が終了し、グループを離れる際、以前にインスタンス化されたStorageStruct は削除されます。
動的に作成されたStorageStruct のインスタンスには、ネストされたグループやそのタスクを含め、親のGroup 要素の任意のハンドラ本体内から、Storage::operator->()、Storage::operator*()、またはStorage::activeStorage() メソッドを介してアクセスできます。
Storageも参照してください 。
GroupItem::GroupItem(std::initializer_list<QtTaskTree::GroupItem> children)
これはオーバーロードされた関数です。
GroupItem(const QtTaskTree::GroupItems &children)も参照してください 。
[constexpr noexcept default] GroupItem::GroupItem(QtTaskTree::GroupItem &&other)
GroupItem のインスタンスをムーブコンストラクトで生成します。
© 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.