1. 概念
QFuture是Qt库中的一个类,它代表了一个异步计算的结果。当你启动一个耗时的操作,如文件读取或复杂的计算任务时,我们不希望这些操作阻塞主线程,从而影响用户界面的响应性。
QFuture就是用来处理这种异步操作的,它允许你在任务完成后获取结果,而不必阻塞主线程。
2. 用途:
- 异步执行任务,避免阻塞UI线程。
- 监控任务的进度和状态。
- 获取异步任务的结果。
3. 重点:
QFutrue 和 QFutureWatcher 都是模版类, 因此在定义对象时, 要保证类型是一致的,如:
QFuture<bool> future; 则对应的要定义 QFutureWatcher<bool> watcher;
4. 示例代码:
bool RunningFunction(int n) {
//耗时相关代码
return true; // 或者false
}
int seconds = 1;
QFuture<bool> future = QtConcurrent::run(RunningFunction, seconds);
QFutureWatcher<bool> watcher;
watcher.setFuture(future);
5. 解释:
QFuture<T> QtConcurrent::run 的基本形式是: QFuture<T> QtConcurrent::run(Function function,...), 后面的...代表的是function传入的参数;
因此,此处在调用run时,函数参数为:RunningFunction 和 seconds;
在执行watcher.setFuture(future)语句之后, 函数RunningFunction 则开始启动运行;
在RunningFunction 运行完成后,watcher则会发出 finished 信号,此时,我们便可以处理其他动作。