Qt并发映射错误c2440

QtConcurrent map error c2440

我正在制作一个用于识别图像中车牌的应用程序。它工作正常,但现在我想将代码的图像分析部分移动到一个单独的线程。我正在使用 Qt 5.4。阅读文档后,我决定使用 QtConcurrent::map 是正确的,因为在处理图像之前,用户加载存储在列表中的文件(仅它们的名称)。这是一些代码:

线程中应该 运行 的函数的定义:

results detectPlates(const QString &file);

尝试使用多线程:

QFuture<results> r = QtConcurrent::map(files, &MainWindow::detectPlates)

files 定义为 QList<QString> results 是我正在使用的库中定义的类型,如果这很重要的话。

这没有编译错误:

C2440 'initializing' cannot convert from `QFuture<void>` to `QFuture<results>`

当我将函数修改为 <void> 时,我得到:

error c2064: term does not evaluate to a function taking 1 argument.

问题是什么?如果有任何帮助,我将不胜感激。

QtConcurrent::map 修改现有的项目,return 是一个无效的未来。如果要 return 形式为 QFuture<T> 的结果,则需要使用 QtConcurrent::mapped.