代码实现: void loadImage(const QUrl &url) { QFuture data = QtConcurrent::run(download, url); QFutureWatcher dataWatcher; dataWatcher.setFuture(data); connect(&dataWatcher, &QFutureWatcher ::finished QFuture processedImage = QtConcurrent::run(processImage, image); QFutureWatcher<QImage> imageWatcher ; imageWatcher.setFuture(processedImage); connect(&imageWatcher, &QFutureWatcher::finished
mainwindow.cpp#include "mainwindow.h"#include "ui_mainwindow.h"#include <QMessageBox>// Qt高级线程#include <QFutureWatcher AnalysesResultData QFuture<void> future = QtConcurrent::run(this, &MainWindow::AnalysesResultData); // 使用 QFutureWatcher 监听任务完成信号 QFutureWatcher<void> *watcher = new QFutureWatcher<void>(this); connect(watcher, &QFutureWatcher
Qtomic运算 QAtomicPointer 提供了指针上Atomic运算的模板函数 QFuture 显示异步运算结果的类 QFutureSynchronizer QFuture类简化同步而提供的类 QFutureWatcher
为了能够使用 Qt 信号和插槽对QFuture类进行更灵活的控制,我们可以使用一个名为QFutureWatcher的便捷类,该类包含可以通过使用小部件更轻松地监视计算的信号和插槽。 然后将结果传递给QFuture<void>,该实例由QFutureWatcher<void>实例监视。 如前所述,QFutureWatcher类是监视来自QtConcurrent的计算的便捷方式,该计算已分配给QFuture类。 注意,在这种情况下,QFutureWatcher被定义为指针,并在处理完成时稍后删除。 原因是QFutureWatcher在整个过程继续进行期间必须保持活动状态,并且只有在计算完成后才能删除。 因此,首先完成QFutureWatcher的所有必需连接,然后相应地设置其将来变量。 重要的是要确保在建立所有连接后设置未来。