QRunnable Class
QRunnable 类是所有 runnable 对象的基类。更多
头文件: | #include <QRunnable> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 所有成员(包括继承成员)的列表
- QRunnable 属于线程类。
公共函数
QRunnable() | |
virtual | ~QRunnable() |
bool | autoDelete() const |
virtual void | run() = 0 |
void | setAutoDelete(bool autoDelete) |
静态公共成员
QRunnable * | create(Callable &&callableToRun) |
详细说明
QRunnable 类是一个接口,用于表示需要执行的任务或代码片段,通过重新实现run() 函数来表示。
您可以使用QThreadPool 在单独的线程中执行代码。如果autoDelete() 返回true
(默认值),则QThreadPool 会自动删除 QRunnable。请使用setAutoDelete() 更改自动删除标志。
QThreadPool 通过在 () 函数中调用 (this),支持多次执行同一个 QRunnable。如果启用 ,QRunnable 将在最后一个线程退出运行函数时被删除。启用 时,使用同一个 QRunnable 多次调用 () 会产生竞赛条件,因此不建议使用。run QThreadPool::tryStart autoDelete autoDelete QThreadPool::start
另请参阅 QThreadPool 。
成员函数文档
[constexpr noexcept]
QRunnable::QRunnable()
构造一个 QRunnable。默认启用自动删除功能。
另请参阅 autoDelete() 和setAutoDelete() 。
[virtual noexcept]
QRunnable::~QRunnable()
QRunnable 虚拟析构函数。
bool QRunnable::autoDelete() const
如果启用了自动删除功能,则返回true
;否则返回 false。
如果启用了自动删除功能,QThreadPool 将在调用run() 后自动删除此运行程序;否则,所有权归应用程序编程人员所有。
另请参阅 setAutoDelete() 和QThreadPool 。
[static]
template <typename Callable, QRunnable::if_callable<Callable> = true> QRunnable *QRunnable::create(Callable &&callableToRun)
创建QRunnable ,在run() 中调用callableToRun 。
默认启用自动删除功能。
注: 在 6.6 之前的 Qt 版本中,此方法只使用可复制的函数。
限制条件
只有当Callable
是一个可以用零参数调用的函数或函数对象时,才会参与重载解析。
另请参阅 run() 和autoDelete()。
[pure virtual]
void QRunnable::run()
在你的子类中实现这个纯虚拟函数。
void QRunnable::setAutoDelete(bool autoDelete)
如果autoDelete 为 true,则启用自动删除功能;否则禁用自动删除功能。
如果启用了自动删除功能,QThreadPool 将在调用run() 后自动删除此可运行程序;否则,所有权仍归应用程序编程人员所有。
请注意,必须在调用QThreadPool::start() 之前设置此标志。在QThreadPool::start() 之后调用该函数将导致未定义的行为。
另请参阅 autoDelete() 和QThreadPool 。
© 2025 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.