このページでは

QtTaskTree::GroupItem Class

class QtTaskTree::GroupItem

GroupItem は、Group の一部となる基本要素を表します。さらに...

ヘッダー #include <qtasktree.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS TaskTree)
target_link_libraries(mytarget PRIVATE Qt6::TaskTree)
qmake: QT += tasktree
以来:Qt 6.11
によって継承されています:

QtTaskTree::ExecutableItem そしてQtTaskTree::ExecutionMode

注意:このクラスの関数はすべてリエントラントです。

パブリック型

パブリック関数

GroupItem(const QtTaskTree::GroupItems &children)
GroupItem(const QtTaskTree::Storage<StorageStruct> &storage)
GroupItem(std::initializer_list<QtTaskTree::GroupItem> children)

詳細説明

GroupItem は、Group の一部となる基本要素です。GroupItemのサブクラスが提供する機能をカプセル化します。これは値型であり、GroupItemインスタンスをコピーすることは安全である。

GroupItemには主に4つの種類があります:

GroupItem 種類簡単な説明
QCustomTask非同期タスク・タイプとタスクの開始、完了、エラー・ハンドラを定義する。QThreadFunctionTask<ResultType> やQNetworkReplyWrapperTask のように、ユニークなタスク名でエイリアスされる。 非同期タスクはタスクツリーを使う主な理由である。
Group他のグループアイテムのコンテナ。グループはGroupItem型なので、他のグループの中に入れ子にすることができる。グループは親から1つの非同期タスクとみなされます。
GroupItemを含むStorageグループの子タスクがデータを交換できるようにする。GroupItem containingStorage がグループ内に配置されると、タスクツリーはグループに入る直前にストレージのデータオブジェクトをインスタンス化し、グループを出た直後に破棄します。
その他のグループ制御項目ExecutionMode またはworkflowPolicy() が返す項目は、グループの動作に影響を与える。onGroupSetup() またはonGroupDone() によって返される項目は、グループが実行を開始または終了するときに呼び出されるカスタム・ハンドラを定義します。

メンバ・タイプのドキュメント

[alias] GroupItem::GroupDoneHandler

std::function<DoneResult(DoneWith)> またはDoneResult の型エイリアス。

GroupDoneHandler はonGroupDone() 要素の引数である。上記のシグネチャを持つ関数は、グループdoneハンドラとして渡されると、グループの実行終了時に実行中のタスクツリーから呼び出されます。

DoneWith 引数はオプションであり、doneハンドラは省略することができます。この引数を指定すると、グループの最終結果に関する情報が保持され、その親に報告されます。

返されるDoneResult の値はオプションであり、ハンドラは代わりにvoid を返すことができる。この場合、グループの最終結果はDoneWith 引数で示された値と等しくなります。ハンドラーがDoneResult 値を返す場合、グループの最終結果は、done ハンドラーのボディの内部で、返された値によって微調整される可能性があります。

DoneResult 型の GroupDoneHandler の場合、追加の処理は実行されず、グループのワークフロー ポリシーを無視して、渡された値DoneResult で無条件に終了します。

onGroupDone()、GroupSetupHandlerQCustomTask::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()、GroupDoneHandlerQCustomTask::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 のインスタンスは、Storage::operator->(),Storage::operator*(),Storage::activeStorage() メソッドによって、ネストされたグループとそのタスクを含む、親Group 要素のハンドラボディの内部からアクセス可能です。

Storageも参照してください

GroupItem::GroupItem(std::initializer_list<QtTaskTree::GroupItem> children)

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

GroupItem(const QtTaskTree::GroupItems &children)も参照してください

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