QtTaskTree::Do Class
class QtTaskTree::Do一种用于“For”和“When”结构的正文元素。更多内容...
| 头文件: | #include <qtasktree.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS TaskTree) target_link_libraries(mytarget PRIVATE Qt6::TaskTree) |
| qmake: | QT += tasktree |
| 自: | Qt 6.11 |
| 状态: | 技术预览 |
该类处于技术预览阶段,内容可能会有变动。
注意:本类中的所有函数均为可重入函数。
公共函数
| Do(const QtTaskTree::GroupItems &children) | |
| Do(std::initializer_list<QtTaskTree::GroupItem> children) | |
| Do(QtTaskTree::Do &&other) |
相关的非成员
| QtTaskTree::Group | operator>>(const QtTaskTree::When &whenItem, const QtTaskTree::Do &doItem) |
详细说明
一个主体元素,包含在每次For 迭代或When 的屏障推进后要执行的任务列表。
For (RepeatIterator(5)) >> Do {
task1,
task2
};如果是 For 循环,则 Do 的主体将执行多次。如果onGroupSetup() 或onGroupDone() 处理程序是传递给 Do 构造函数的子对象的一部分,它们将仅执行一次——在整个循环开始之前,以及整个循环结束之后:
const RepeatIterator iterator(3);
const auto onSetup = [] { qDebug() << "Setup"; };
const auto onSync = [iterator] { qDebug() << "Current iteration:" << iterator->iteration(); };
const auto onDone = [] { qDebug() << "Done"; };
const Group recipe = For (iterator) >> Do {
onGroupSetup(onSetup),
QSyncTask(onSync),
onDone(onDone)
};执行上述代码示例时,将输出:
Setup
Current iteration: 0
Current iteration: 1
Current iteration: 2
Done如果希望在每次迭代时调用组处理程序,请用额外的Group 将Do主体包裹起来,例如:
const Group recipe = For (iterator) >> Do {
Group {
onGroupSetup(onSetup),
QSyncTask(onSync),
onDone(onDone)
}
};执行后者时,输出结果为:
Setup
Current iteration: 0
Done
Setup
Current iteration: 1
Done
Setup
Current iteration: 2
Done当Storage 作为主体的直接子项传递时,情况类似。存储结构仅在整个循环开始前实例化一次,并在整个循环结束后立即销毁。如果希望每次迭代都有独立的Storage 实例,请用额外的Group 包裹Do主体。
请谨慎在For 循环的Do主体中放置parallel 元素,因为所有迭代都将并行开始。这可能并非预期行为,特别是在使用ForeverIterator 的情况下。
成员函数文档
[explicit] Do::Do(const QtTaskTree::GroupItems &children)
构建一个包含children 的Do主体,该主体将在每次For 迭代时执行,或在When 的屏障被推进后执行。
[explicit] Do::Do(std::initializer_list<QtTaskTree::GroupItem> children)
构建一个 Do 主体,并将 `children ` 作为初始化列表传递。
这是一个重载函数。
[constexpr noexcept default] Do::Do(QtTaskTree::Do &&other)
通过移动构造生成一个Do 实例。
相关的非成员
QtTaskTree::Group operator>>(const QtTaskTree::When &whenItem, const QtTaskTree::Do &doItem)
将 `whenItem ` 与 `doItem ` 的主体相结合,并返回一个 `Group `,该对象可直接用于任务树配方中。
© 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.