QtTaskTree::ExecutableItem Class
class QtTaskTree::ExecutableItem可执行任务项的基类。更多...
| 头文件: | #include <qtasktree.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS TaskTree) target_link_libraries(mytarget PRIVATE Qt6::TaskTree) |
| qmake: | QT += tasktree |
| 自: | Qt 6.11 |
| 继承自: | QtTaskTree::GroupItem |
| 继承自: | QtTaskTree::Forever、QtTaskTree::Group 、QtTaskTree::QCustomTask 以及QtTaskTree::QSyncTask |
| 状态: | 技术预览 |
该类处于技术预览阶段,内容可能会发生变更。
注意:该类中的所有函数均为可重入函数。
公共函数
| QtTaskTree::Group | withAccept(ObjectSignalGetter &&getter) const |
| QtTaskTree::Group | withCancel(ObjectSignalGetter &&getter, std::initializer_list<QtTaskTree::GroupItem> postCancelRecipe = {}) const |
| QtTaskTree::Group | withLog(const QString &logName) const |
| QtTaskTree::Group | withTimeout(std::chrono::milliseconds timeout, const std::function<void ()> &handler = {}) const |
相关的非成员
| QtTaskTree::Group | operator!(const QtTaskTree::ExecutableItem &item) |
| QtTaskTree::Group | operator&&(const QtTaskTree::ExecutableItem &first, const QtTaskTree::ExecutableItem &second) |
| QtTaskTree::Group | operator&&(const QtTaskTree::ExecutableItem &item, QtTaskTree::DoneResult result) |
| QtTaskTree::Group | operator||(const QtTaskTree::ExecutableItem &first, const QtTaskTree::ExecutableItem &second) |
| QtTaskTree::Group | operator||(const QtTaskTree::ExecutableItem &item, QtTaskTree::DoneResult result) |
详细说明
ExecutableItem 为包含可执行任务的项目提供了一个附加接口。使用withTimeout() 为任务设置超时。使用withLog() 包含有关任务启动和执行结果的调试信息。
成员函数文档
template <typename ObjectSignalGetter> QtTaskTree::Group ExecutableItem::withAccept(ObjectSignalGetter &&getter) const
返回一个与信号等待器关联的this ExecutableItem 的副本。传入的getter 是一个函数,该函数返回一个ObjectSignal ,该对象描述了信号发射器及其等待的信号。请在getter 内部使用makeObjectSignal()来创建一个ObjectSignal 对象。
当this ExecutableItem 因错误而终止时,返回的Group 会立即因错误而终止,而不会等待等待器的信号。
当this ExecutableItem 成功完成时,返回的Group 不会立即结束,而是等待待处理信号被发送。待处理信号发送后,返回的Group 才成功完成。如果待处理信号在this ExecutableItem 完成之前就被发送,则会跳过待处理阶段,返回的Group 将同步完成。
当this ExecutableItem 即将启动时,会建立与等待信号的连接。如果等待信号在此之前已被触发,则在this ExecutableItem 启动后将不会被察觉。
template <typename ObjectSignalGetter> QtTaskTree::Group ExecutableItem::withCancel(ObjectSignalGetter &&getter, std::initializer_list<QtTaskTree::GroupItem> postCancelRecipe = {}) const
使this ExecutableItem 的副本可取消。传入的getter 是一个函数,该函数返回一个ObjectSignal ,用于描述发射器及其取消信号。请在getter 内部使用makeObjectSignal()来创建一个ObjectSignal 对象。当发出取消信号时,this ExecutableItem 将被取消,可选提供的postCancelRecipe 将被执行,且返回的Group将以错误状态结束。
当this ExecutableItem 在取消信号发出之前结束时,返回的 Group 将立即以与this ExecutableItem 结束时相同的结果结束。在此情况下,可选提供的postCancelRecipe 将被跳过。
当this ExecutableItem 即将启动时,会建立与取消信号的连接。如果取消信号在此之前已被触发,则在this ExecutableItem 启动后将不会被察觉。
QtTaskTree::Group ExecutableItem::withLog(const QString &logName) const
将自定义调试输出附加到this ExecutableItem 的副本上,该调用在任务启动时和任务完成后执行,并返回该关联项。
调试输出包含事件(开始或结束)的时间戳以及logName ,用于在调试日志中识别特定任务。
完成时的输出还包含以下附加信息:执行是同步还是异步、执行结果(由DoneWith 枚举描述的值)以及总执行时间(以毫秒为单位)。
QtTaskTree::Group ExecutableItem::withTimeout(std::chrono::milliseconds timeout, const std::function<void ()> &handler = {}) const
将QTimeoutTask 与this 的副本ExecutableItem 关联,该副本将在timeout 之后(以毫秒为单位)过期,并可选地提供超时参数handler ,最后返回该关联项。
当ExecutableItem 在timeout 到期前完成时,返回的项将立即以任务的结果结束。否则,将调用handler (如果已提供),任务将被取消,返回的项将以错误状态结束。
相关的非成员
QtTaskTree::Group operator!(const QtTaskTree::ExecutableItem &item)
返回一个组,其DoneResult 为item 的取反值。
如果item 报告DoneResult::Success ,则返回项报告DoneResult::Error 。如果item 报告DoneResult::Error ,则返回项报告DoneResult::Success 。
该返回项等同于:
Group {
item,
onGroupDone([](DoneWith doneWith) { return toDoneResult(doneWith == DoneWith::Error); })
}另请参阅 operator&&() 和operator||()。
QtTaskTree::Group operator&&(const QtTaskTree::ExecutableItem &first, const QtTaskTree::ExecutableItem &second)
返回一个包含first 和second 任务(通过“conjunction”运算符合并)的组。
first 和second 这两个任务均按顺序执行。如果两个任务均报告DoneResult::Success ,则返回项报告DoneResult::Success 。否则,返回项报告DoneResult::Error 。
返回项具有短路行为:如果first 任务报告DoneResult::Error ,则会跳过second 任务,并立即返回DoneResult::Error 。
返回项等同于:
Group { stopOnError, first, second }注意: 可通过以下代码实现短路方式的并行 执行:Group { parallel, stopOnError, first, second } 。在此情况下:如果第一个完成的任务报告DoneResult::Error ,则另一个任务将被取消,且该组会立即报告DoneResult::Error 。
另请参阅 operator||() 和operator!()。
QtTaskTree::Group operator&&(const QtTaskTree::ExecutableItem &item, QtTaskTree::DoneResult result)
如果result 为DoneResult::Success ,则返回item 任务;否则返回item 任务,并将该任务的完成结果调整为DoneResult::Error 。
task && DoneResult::Error 相当于无条件地将任务的 done 结果调整为DoneResult::Error 。
该函数重载了ExecutableItem::operator&&()。
QtTaskTree::Group operator||(const QtTaskTree::ExecutableItem &first, const QtTaskTree::ExecutableItem &second)
返回一个通过析取运算合并了first 和second 任务的组。
first 和second 这两个任务均按顺序执行。如果两个任务都报告DoneResult::Error ,则返回项报告DoneResult::Error 。否则,返回项报告DoneResult::Success 。
返回项具有短路行为:如果first 任务报告DoneResult::Success ,则会跳过second 任务,并立即返回DoneResult::Success 。
返回项等同于:
Group { stopOnSuccess, first, second }注意: 可通过以下代码实现以短路方式并行 执行析取运算:Group { parallel, stopOnSuccess, first, second } 。在此情况下,如果第一个完成的任务报告DoneResult::Success ,则另一个任务将被取消,且该组会立即报告DoneResult::Success 。
另请参阅 operator&&() 和operator!()。
QtTaskTree::Group operator||(const QtTaskTree::ExecutableItem &item, QtTaskTree::DoneResult result)
如果result 为DoneResult::Error ,则返回item 任务;否则返回item 任务,并将该任务的完成结果调整为DoneResult::Success 。
task || DoneResult::Success 相当于无条件地将任务的 done 结果调整为DoneResult::Success 。
该函数重载了ExecutableItem::operator||()。
© 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.