我正在尝试在QModelIndexes列表中使用concurrent :: run()。我试图调用的函数如下所示:
writeXML(QModelIndex &index)
我的地图代码如下:
QModelIndexList list;
QFutureWatcher<void> futureWatcher;
futureWatcher.setFuture(QtConcurrent::map(list, list->writeXML() ));
futureWatcher.waitForFinished();
我收到一个编译错误,说“没有匹配函数来调用writeXML()。
我看过这个有用的教程:http://www.bogotobogo.com/Qt/Qt5_QtConcurrent_QFutureWatcher_QProgressDialog_map.php
但是我还不知道索引是如何传递给函数的,在我的例子中是writeXML()?
我需要对上面的代码做什么才能至少编译?
答案 0 :(得分:2)
QModelIndexList
只是typedef
的{{1}},当然QList<QModelIndex>
没有QList
方法,因为它是您的自定义函数。你需要一个容器(writeXML
)和一个函数(list
),所以它应该是。
writeXML
另一个例子:
QModelIndexList list;
QFutureWatcher<void> futureWatcher;
futureWatcher.setFuture(QtConcurrent::map(list, writeXML));
//valid only if writeXML is a function, not a class member function!
futureWatcher.waitForFinished();