1

QtConcurrent::map で関数を実行したいのですが、常にエラーが発生します... Mainwindow: には 2 つの関数がありますon_listWidget_itemClicked and _fillTreeWithList(QStringList selectedListWidget)。関数on_listWidget_itemClicked should use map with _fillTreeWithList.

私のコード:

ヘッダ:

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);
                                                                         ^

私の問題を解決する方法を知っている人はいますか?

4

1 に答える 1

1

ドキュメントからシーケンスは、ポインターではなく参照によって取得する必要があります

QFuture<void> QtConcurrent::map ( Sequence & sequence, MapFunction function )

試す:

SqlLoadingThread=QtConcurrent::map(list, &MainWindow::_fillTreeWithList);

また、MapFunction が参照によってパラメーター (QStringList) を受け取るようにする必要があります。

void _fillTreeWithList(QStringList&);
于 2014-11-21T15:57:05.070 に答える