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 在取消信号发出前结束时,返回的组会立即结束,其结果与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 任务的合并组。
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 相当于将任务的完成结果无条件调整为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 相当于将任务的完成结果无条件调整为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.