недопустимое использование нестатической функции-члена QtConcurrent

У меня есть функция с именем RunProcess. Я хочу использовать его в параллельном процессе, чтобы сделать графический интерфейс отзывчивым, поэтому я попытался запустить свою функцию в параллельном процессе, но он не распознает функцию. вот мой класс

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "gdal_priv.h"
#include "cpl_conv.h" // for CPLMalloc()
#include "ogr_srs_api.h"
#include <QDir>
#include <QFile>
#include <QDebug>
#include <iostream>
#include <cstring>
#include <string>
#include <QFileDialog>
#include <QThread>
#include <QtConcurrent/QtConcurrent>


using namespace QtConcurrent;
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{


    ui->setupUi(this);
    connect(ui->startProcess, SIGNAL (released()), this, SLOT (StartProcess()));

}




void MainWindow::StartProcess(){


    sendinfo("Starting Process... Note that the input images <b>must<\b> be in ESPG:3857.");

    QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),
                                                    "/home",
                                                    QFileDialog::ShowDirsOnly
                                                    | QFileDialog::DontResolveSymlinks);


    if(dir==""){
        sendwarning("nothing is selected.");
            return;
    }
    sendinfo("The selected folder is: "+dir);


    QFuture<void> f1 = run(RunProcess,dir);
    f1.waitForFinished();

}


void MainWindow::RunProcess( QString dir){

    if(dir==""){
        sendwarning("nothing is selected.");
            return;
    }
    sendinfo("The selected folder is: "+dir);
    QString path(dir);
    QDir directory(path);

    if(directory.exists()){
        ....
    }else{

        //directory does not exist
        senderror("directory does not exist");

    }

}

вот мой заголовок

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "gdal_priv.h"
#include "ogr_spatialref.h"
#include "gdal_utils_priv.h"
#include "cpl_error.h"
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    void RunProcess();

    ~MainWindow();
public slots:
    void StartProcess();
private:
    Ui::MainWindow *ui;
    void senderror(QString msg);
    void sendinfo(QString msg);
    void sendwarning(QString msg);
    void gettext(QString msg,QString color);
};

#endif // MAINWINDOW_H

Приведенный выше код возвращает

 mainwindow.cpp:180: error: invalid use of non-static member function ‘void MainWindow::RunProcess()’
     QFuture<void> f1 = run(RunProcess,dir);
                                         ^

Не могли бы вы помочь мне найти мою ошибку? Благодарность


person Majid Hojati    schedule 13.12.2017    source источник
comment
Он не распознает функцию Да, распознает. Как он мог сказать вам, что вы использовали неправильный синтаксис для этой функции, если он не распознал его?   -  person underscore_d    schedule 13.12.2017
comment
@underscore_d Привет, спасибо, так что же я делаю не так?   -  person Majid Hojati    schedule 13.12.2017
comment
Вы вообще смотрели на связанный дубликат?   -  person underscore_d    schedule 13.12.2017
comment
@underscore_d да, но не мог понять свою ошибку   -  person Majid Hojati    schedule 13.12.2017
comment
Добавьте &YourClassName:: к имени функции-члена и попробуйте.   -  person underscore_d    schedule 13.12.2017
comment
@underscore_d Я пробовал, но выдает ту же ошибку: = неправильное использование нестатической функции-члена ‘void MainWindow::RunProcess()’ QFuture‹void› f1 = run(MainWindow::RunProcess,dir); ^   -  person Majid Hojati    schedule 13.12.2017
comment
Правильно, я думаю, как и в обмане, вам также нужно передать экземпляр, чью функцию-член вы хотите вызвать, в качестве первого аргумента, за которым следует указатель на член. Чтение документации прояснит это. Вот лучший дубликат: можно использовать QtConcurrent::run() с функцией-членом класса   -  person underscore_d    schedule 13.12.2017
comment
@underscore_d ни один из них не сработал.   -  person Majid Hojati    schedule 14.12.2017