QtTaskTree::ListIterator Class
template <typename T> class QtTaskTree::ListIterator要在 For element 中使用的列表迭代器。更多内容...
| 头文件: | #include <qtasktree.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS TaskTree) target_link_libraries(mytarget PRIVATE Qt6::TaskTree) |
| qmake: | QT += tasktree |
| 自: | Qt 6.11 |
| 继承自: | QtTaskTree::Iterator |
| 状态: | 技术预览 |
该类处于技术预览阶段,内容可能会有变动。
注意:该类中的所有函数均为可重入函数。
公共函数
| ListIterator(RangeGetter &&rangeGetter) | |
| ListIterator(const QList<T> &list) | |
| const T & | operator*() const |
| const T * | operator->() const |
另请参阅 Iterator 、ForeverIterator 、RepeatIterator 和UntilIterator 。
成员函数文档
[explicit] template <typename RangeGetter, typename RangeType = std::invoke_result_t<std::decay_t<RangeGetter>>> requires if_compatible_range<RangeGetter> ListIterator::ListIterator(RangeGetter &&rangeGetter)
为For (ListIterator(rangeGetter)) >> Do {} 构造体构建列表迭代器。rangeGetter 是一个无参数的可调用对象,其返回的连续范围的value_type 为T 。返回的范围不必是QList<T>。任何支持std::data() 的连续范围类型均可接受——例如,返回QString 的getter对于ListIterator<QChar> 是有效的。 当进入包含此迭代器的Group 时,会调用一次该getter方法,此时所有相关存储和父迭代均已激活。如果可能的Group的onSetupHandler()返回的值不是SetupResult::Continue ,则可能会跳过此调用。迭代器将遍历返回范围中的每个元素。
这是一种用于遍历嵌套循环的便捷模式:
const ListIterator outer(QStringList{"12", "34"});
const ListIterator inner([outer] { return *outer; });
const Group recipe {
For (outer) >> Do {
For (inner) >> Do {
QSyncTask([inner] { qDebug() << *inner; })
}
}
};另请参阅 Iterator::iteration()、operator*() 和operator->()。
[explicit] ListIterator::ListIterator(const QList<T> &list)
为For (ListIterator(list)) >> Do {} 构造体构建列表迭代器。该迭代器将遍历从传入的list 中获取的每个元素。
另请参阅 Iterator::iteration()、operator*() 和operator->()。
const T &ListIterator::operator*() const
返回对 Do 主体内当前元素的引用。仅可在位于配方中 `QtTaskTree::Do ` 主体内的任何 `GroupItem ` 元素的处理程序主体内使用此函数,否则可能会导致程序崩溃。请确保已将 `ListIterator ` 传递给 `For` 元素。
const T *ListIterator::operator->() const
返回 Do 体中当前元素的指针。仅可在位于配方中QtTaskTree::Do 体内的任何GroupItem 元素的处理程序体内使用此函数,否则可能会导致程序崩溃。请确保已将ListIterator 传递给 For 元素。
© 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.