使用带有QModelIndexes

时间:2015-06-29 14:01:52

标签: c++ multithreading qt

我正在尝试在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()?

我需要对上面的代码做什么才能至少编译?

1 个答案:

答案 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();