QtTaskTree::Group Class
class QtTaskTree::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 |
| 状态: | 技术预览 |
该类处于技术预览阶段,内容可能会有变动。
注意:该类中的所有函数均为可重入函数。
公共函数
| Group(const QtTaskTree::GroupItems &children) | |
| Group(std::initializer_list<QtTaskTree::GroupItem> children) |
详细说明
Group 是其他组项的容器。它将子任务封装成一个单元,该单元在组的父级看来是一个单一的异步任务。由于 Group 属于GroupItem 类型,因此它也可以是 Group 的子项。
使用别名自定义任务名称将子任务插入组中,例如:QThreadFunctionTask<ResultType> 或QNetworkReplyWrapperTask :
const Group group {
QNetworkReplyWrapperTask(...),
QThreadFunctionTask<int>(...)
};您可以通过插入ExecutionMode 或WorkflowPolicy 项来自定义该组的行为:
const Group group {
parallel,
continueOnError,
QNetworkReplyWrapperTask(...),
QNetworkReplyWrapperTask(...)
};该组可以包含嵌套组:
const Group group {
finishAllAndSuccess,
QNetworkReplyWrapperTask(...),
Group {
QNetworkReplyWrapperTask(...),
Group {
parallel,
QNetworkReplyWrapperTask(...),
QNetworkReplyWrapperTask(...),
}
QThreadFunctionTask<QString>(...)
}
};该组可动态实例化自定义存储结构,该结构可用于任务间的数据交换:
struct MyCustomStruct { QByteArray data; };
Storage<MyCustomStruct> storage;
const auto onFirstSetup = [](QNetworkReplyWrapper &task) { ... };
const auto onFirstDone = [storage](const QNetworkReplyWrapper &task) {
// storage-> gives a pointer to MyCustomStruct instance,
// created dynamically by the running task tree.
storage->data = task.reply()->readAll();
};
const auto onSecondSetup = [storage](QThreadFunction<QImage> &task) {
// storage-> gives a pointer to MyCustomStruct. Since the group is sequential,
// the stored MyCustomStruct was already updated inside the onFirstDone handler.
const QByteArray storedData = storage->data;
};
const Group group {
// When the group is entered by a running task tree, it creates MyCustomStruct
// instance dynamically. It is later accessible from all handlers via
// the *storage or storage-> operators.
sequential,
storage,
QNetworkReplyWrapperTask(onFirstSetup, onFirstDone, CallDoneFlag::OnSuccess),
QThreadFunctionTask<QImage>(onSecondSetup)
};成员函数文档
Group::Group(const QtTaskTree::GroupItems &children)
根据给定的children 列表构建一个组。
当组的子项在编译时未知,而需在后续的运行时确定时,此构造函数非常有用:
const QStringList sourceList = ...;
GroupItems groupItems { parallel };
for (const QString &source : sourceList) {
const QNetworkReplyWrapperTask task(...); // use source for setup handler
groupItems << task;
}
const Group group(groupItems);Group::Group(std::initializer_list<QtTaskTree::GroupItem> children)
根据children 生成的std::initializer_list 构建一个组。
当组的所有子项在编译时已知时,此构造函数非常有用:
const Group group {
finishAllAndSuccess,
QNetworkReplyWrapperTask(...),
Group {
QNetworkReplyWrapperTask(...),
Group {
parallel,
QNetworkReplyWrapperTask(...),
QNetworkReplyWrapperTask(...),
}
QThreadFunctionTask<QString>(...)
}
};© 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.