c++ - QtConcurrent::map 不接受参数

标签 c++ qt qtconcurrent

我想用 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/

相关文章:

c++ - QtConcurrent:为什么releaseThread和reserveThread会导致死锁?

multithreading - QtConcurrent 运行的线程 id

c++ - 一个函数可以通过 const 引用*而不*接受临时变量作为参数吗?

c++ - 使用 Visual C++ 2010 构建 Qt 4.5

c++ - 像 Qt 中的 Simulink 一样的信号流拖放

c++ - QtConcurrent::run() 不接受 __stdcall/WINAPI 函数

c++ - 多个服务导出相同的 COM 组件

macos - 在 Mac 上将 Homebrew 安装的 Qt 添加到 Qt Creator

c++ - 数据库打不开错误qt c++

c++ - 在 C++ 中存储 XML 树的最有效数据结构