在本页

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 ,并返回耦合项。

ExecutableItemtimeout 传递之前结束时,返回的项目会立即与任务结果一起结束。否则,将调用handler (如果提供),取消任务,并以错误结束返回项。

相关非成员

QtTaskTree::Group operator!(const QtTaskTree::ExecutableItem &item)

返回DoneResultitem 否定后的组。

如果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)

返回包含firstsecond 任务的合并组。

firstsecond 任务均按顺序执行。如果两个任务都报告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)

如果resultDoneResult::Success ,则返回item 任务;否则返回item 任务,并将其完成结果调整为DoneResult::Error

task && DoneResult::Error 相当于将任务的完成结果无条件调整为DoneResult::Error

此函数重载了ExecutableItem::operator&&()。

QtTaskTree::Group operator||(const QtTaskTree::ExecutableItem &first, const QtTaskTree::ExecutableItem &second)

firstsecond 任务通过析取合并后返回一个组。

firstsecond 任务依次执行。如果两个任务都报告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)

如果resultDoneResult::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.