我想用 QtConcurrent::map 运行一个函数,但总是出错......
我在主窗口中有两个函数:on_listWidget_itemClicked 和 _fillTreeWithList(QStringList selectedListWidget)
。函数 on_listWidget_itemClicked 应使用带 _fillTreeWithList 的 map 。
我的代码:
标题:
QFuture<void> SqlLoadingThread;
void _fillTreeWithList(QStringList);
void on_listWidget_itemClicked(QListWidgetItem *item);
CPP:
void MainWindow::on_listWidget_itemClicked(QListWidgetItem *item)
{
QStringList selectedListWidget;
QList<QListWidgetItem *> selected=ui->listWidget->selectedItems();
foreach (QListWidgetItem * item, selected){
selectedListWidget.append(item->text());
}
if(SqlLoadingThread.isRunning()){
SqlLoadingThread.cancel();
}
QList<QStringList> list;
list.append(selectedListWidget);
SqlLoadingThread=QtConcurrent::map(&list, &MainWindow::_fillTreeWithList);
}
错误:
...mainwindow.cpp:56: Error: no matching function for call to 'map(QList<QStringList>*, void (MainWindow::*)(QStringList))'
SqlLoadingThread=QtConcurrent::map(&list, &MainWindow::_fillTreeWithList);
^
有人知道如何解决我的问题吗?
最佳答案
来自文档序列应该通过引用获取,而不是通过指针
QFuture<void> QtConcurrent::map ( Sequence & sequence, MapFunction function )
尝试:
SqlLoadingThread=QtConcurrent::map(list, &MainWindow::_fillTreeWithList);
此外,您还需要让您的 MapFunction 通过引用获取参数 (QStringList):
void _fillTreeWithList(QStringList&);
关于c++ - QtConcurrent::map 不接受参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27064996/