C++ QtConcurrent::map不';不接受参数

C++ QtConcurrent::map不';不接受参数,c++,qt,qtconcurrent,C++,Qt,Qtconcurrent,我想用QtConcurrent::map运行一个函数,但我总是会出错。。。 我在主窗口中有两个函数:在\u listWidget\u itemClicked和\u fillTreeWithList(QStringList selectedListWidget)。单击的\u listWidget\u Item上的函数应使用带有\u fillTreeWithList的映射。 我的代码: QFuture<void> SqlLoadingThread; void _fillTreeWithL

我想用QtConcurrent::map运行一个函数,但我总是会出错。。。 我在主窗口中有两个函数:
在\u listWidget\u itemClicked和\u fillTreeWithList(QStringList selectedListWidget)
。单击的\u listWidget\u Item上的函数
应使用带有\u fillTreeWithList的映射。

我的代码:

QFuture<void> SqlLoadingThread;
void _fillTreeWithList(QStringList);
void on_listWidget_itemClicked(QListWidgetItem *item);
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);
}
标题:

QFuture<void> SqlLoadingThread;
void _fillTreeWithList(QStringList);
void on_listWidget_itemClicked(QListWidgetItem *item);
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);
}
QFuture-SqlLoadingThread;
void _fillTreeWithList(QStringList);
已单击的项目(QListWidgetItem*项目)上的无效项;
Cpp:

QFuture<void> SqlLoadingThread;
void _fillTreeWithList(QStringList);
void on_listWidget_itemClicked(QListWidgetItem *item);
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);
}
void主窗口::在_listWidget_item上单击(QListWidgetItem*item)
{
QStringList selectedListWidget;
QList selected=ui->listWidget->selectedItems();
foreach(QListWidgetItem*item,选中){
selectedListWidget.append(item->text());
}
if(SqlLoadingThread.isRunning()){
SqlLoadingThread.cancel();
}
QList列表;
list.append(selectedListWidget);
SqlLoadingThread=QtConcurrent::map(&list,&main窗口::_fillTreeWithList);
}
错误:

  ...mainwindow.cpp:56: Error: no matching function for call to 'map(QList<QStringList>*, void (MainWindow::*)(QStringList))'
 SqlLoadingThread=QtConcurrent::map(&list, &MainWindow::_fillTreeWithList);
                                                                         ^
…mainwindow.cpp:56:错误:调用“map(QList*,void(mainwindow::*)(QStringList))”没有匹配的函数
SqlLoadingThread=QtConcurrent::map(&list,&main窗口::_fillTreeWithList);
^

有人知道如何解决我的问题吗?

从文档序列中应该通过引用,而不是指针

QFuture<void> QtConcurrent::map ( Sequence & sequence, MapFunction function )
此外,还需要使MapFunction通过引用获取参数(QStringList):

void _fillTreeWithList(QStringList&);

现在我得到了另一个错误:D:\Program\Qtneu\5.3\mingw482\u 32\include\QtConcurrent\qtconcurrentmapkernel.h:71:Fehler:调用(QtConcurrent::MemberFunctionWrapper1)(QStringList&)map(*it);^不匹配我尝试了很多次,但都不想运行:)在相同的错误上添加了一个补遗:对“(QtConcurrent::MemberFunctionWrapper1)(QStringList&)map(*it)的调用不匹配^<代码>\u fillTreeWithList不能是非静态成员函数。