在本页

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::ExecutableItemQtTaskTree::ExecutionMode

注意:该类中的所有函数都是可重入的

公共类型

公共函数

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

详细说明

GroupItem 是一个基本元素,可作为任何Group 的一部分。它封装了任何 GroupItem 子类所提供的功能。它是一种值类型,复制 GroupItem 实例是安全的,即使它最初是通过子类的构造函数创建的。

GroupItem 主要有四种:

GroupItem 类型简要说明
QCustomTask定义异步任务类型以及任务的开始、完成和错误处理程序。使用唯一的任务名称进行别名,如QThreadFunctionTask<ResultType> 或QNetworkReplyWrapperTask 。 异步任务是使用任务树的主要原因。
Group其他组项的容器。由于组属于 GroupItem 类型,因此可以将其嵌套到另一个组中。该组被其父级视为单个异步任务。
包含 GroupItemStorage允许组中的子任务交换数据。当包含Storage 的 GroupItem 放在组内时,任务树会在进入组之前实例化存储的数据对象,并在离开组后销毁它。
其他组控制项ExecutionModeworkflowPolicy() 返回的项目会影响组的行为。onGroupSetup() 或onGroupDone() 返回的项定义了在组开始或结束执行时调用的自定义处理程序。

成员类型文档

[alias] GroupItem::GroupDoneHandler

std::function<DoneResult(DoneWith)>DoneResult 的别名。

GroupDoneHandler 是onGroupDone() 元素的一个参数。任何具有上述签名的函数在作为组完成处理程序传递时,都将在组执行结束时被运行中的任务树调用。

DoneWith 参数是可选的,您的完成处理程序可以省略它。提供该参数时,它将保存向父任务报告的组最终结果的信息。

返回的DoneResult 值是可选的,您的处理程序可以返回void 。在这种情况下,组的最终结果将等于DoneWith 参数指示的值。当处理程序返回DoneResult 值时,组的最终结果可在完成处理程序的正文中根据返回值进行调整。

对于DoneResult 类型的 GroupDoneHandler,不会执行额外的处理,组会无条件地以传入的DoneResult 值结束,并忽略组的工作流策略。

另请参阅 onGroupDone()、GroupSetupHandlerQCustomTask::TaskDoneHandler

[alias] GroupItem::GroupSetupHandler

std::function<SetupResult()> 的类型别名。

GroupSetupHandler 是onGroupSetup() 元素的参数。任何具有上述签名的函数在作为组设置处理程序传递时,都将在组执行开始时被运行中的任务树调用。

处理程序的返回值指示运行中的组在处理程序调用结束后如何继续。SetupResult::Continue 的默认返回值指示组继续运行,即开始执行其子任务。SetupResult::StopWithSuccessSetupResult::StopWithError 的返回值则指示分组跳过子任务的执行,分别在成功或出错后立即结束。

当返回类型为SetupResult::StopWithSuccessSetupResult::StopWithError 时,将立即同步调用组的已完成处理程序(如果提供)。

注意: 即使组设置处理程序返回StopWithSuccessStopWithError ,也会调用组的已完成处理程序。这种行为与任务完成处理程序不同,将来可能会改变。

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.