QFuture Class
template <typename T> class QFuture
QFuture 类是模板类
Header: | #include < QFuture > |
---|---|
qmake: | QT += core |
Since: | Qt 4.4 |
QFuture 类表示异步计算的结果。
详述
要开始计算,请使用 Qt Concurrent 框架中的 API 之一。
QFuture 允许线程与一个或多个结果同步,这些结果将在稍后的时间点准备好。 结果可以是具有默认构造函数和复制构造函数的任何类型。 如果在调用 result()、resultAt() 或 results() 函数时结果不可用,QFuture 将等待直到结果可用。 您可以使用 isResultReadyAt() 函数来确定结果是否准备就绪。 对于报告多个结果的 QFuture 对象,resultCount() 函数返回连续结果的数量。 这意味着从 0 到 resultCount() 迭代结果总是安全的。
QFuture 提供了一个 Java 风格的迭代器(QFutureIterator)和一个 STL 风格的迭代器(QFuture::const_iterator)。 使用这些迭代器是QFuture 访问结果的另一种方式。
QFuture 还提供了与正在运行的计算进行交互的方法。 例如,可以使用 cancel() 函数取消计算。 要暂停计算,请使用 setPaused() 函数或 pause()、resume() 或 togglePaused() 便利函数之一。 请注意,并非所有正在运行的异步计算都可以取消或暂停。 比如QtConcurrent::run()返回的future不能取消; 但是 QtConcurrent::mappedReduced() 返回的QFuture 可以。
进度信息由progressValue()、progressMinimum()、progressMaximum() 和progressText() 函数提供。 waitForFinished() 函数导致调用线程阻塞并等待计算完成,确保所有结果都可用。
可以使用 isCanceled()、isStarted()、isFinished()、isRunning() 或 isPaused() 函数查询 QFuture 表示的计算状态。
QFuture 是一个轻量级的引用计数类,可以按值传递。
QFuture< void > 专门用于不包含任何结果获取函数。 任何 QFuture< T > 也可以分配或复制到 QFuture< void > 中。 如果只需要状态或进度信息 - 而不是实际结果数据,这很有用。
要使用信号和槽与正在运行的任务进行交互,请使用 QFutureWatcher。
公共类型
- class const_iterator
STL-style const iterator - typedef ConstIterator
Qt-style synonym for QFuture::const_iterator
两种迭代器,分别是 Java 风格的迭代器 和 STL 风格的迭代器
成员函数
公共函数
函数 | 简介 |
---|---|
构造和析构 | |
QFuture(const QFuture< T > &other) | 构造 |
QFuture() | 构造 |
QFuture< T > & operator=(const QFuture< T > &other) | 复制 |
~QFuture() | 析构 |
迭代器 | |
QFuture::const_iterator begin() const | 迭代器 |
QFuture::const_iterator end() const | 迭代器 |
QFuture::const_iterator constBegin() const | 常量迭代器 |
QFuture::const_iterator constEnd() const | 常量迭代器 |
计算交互 | |
void cancel() | 取消 |
void pause() | 暂停 |
void setPaused(bool paused) | 设置暂停 |
void togglePaused() | 切换暂停,setPaused(!isPaused()) |
void resume() | 回复 |
void waitForFinished() | 等待结束,阻塞 |
计算状态 | |
bool isCanceled() const | |
bool isFinished() const | |
bool isPaused() const | |
bool isResultReadyAt(int index) const | |
bool isRunning() const | |
bool isStarted() const | |
进度信息 | |
int progressMaximum() const | 最大进度值 |
int progressMinimum() const | 最小进度值 |
QString progressText() const | 返回进度报告,可为空字符串 |
int progressValue() const | 当前进度值 |
结果查询 | |
T result() const | resultAt(0),阻塞型 |
T resultAt(int index) const | 会阻塞 |
resultCount() const | 结果数量 |
QList< T > results() const | 结果集合,阻塞型 |
运算符重载 | |
T operator T() const | result() or resultAt(0),阻塞型 |
bool operator!=(const QFuture< T > &other) const | 比较不相等 |
bool operator==(const QFuture< T > &other) const | 比较相等 |