Передача QString в качестве параметра в QFuture

Мне нужно передать имя файла как QString с путем к функции, охватываемой QFuture и наблюдаемой QFutureWatcher, но этой функции будет передан только первый символ этой QString. Вот объявление в файле *.h:

      qint64 processDataFile(const QString &fileName);
...
QFutureWatcher<qint64> *watcher;

И вот вызов функции:

      watcher = new QFutureWatcher<qint64>;
    connect(watcher, &QFutureWatcher<qint64>::finished, this, &SmartDCPD::fileProcessingFinished);
    qDebug() << log.fileName; // something like C:/users/.....
    watcher->setFuture(QtConcurrent::mapped(log.fileName, std::bind(&SmartDCPD::processDataFile, this, std::placeholders::_1)));

И код функции:

      qint64 SmartDCPD::processDataFile(const QString &fileName)
{
qDebug() << fileName; //Only C (just the first char of the whole QString)
QElapsedTimer t;
t.start();
rapidcsv::Document doc(fileName.toUtf8().constData(), rapidcsv::LabelParams(-1, -1), rapidcsv::SeparatorParams(';'));
QString stamp = QDateTime::currentDateTime().toString("dd.MM.yyyy hh:mm:ss.zzz");
doc.SetCell<std::string>(1, 2, stamp.toUtf8().constData());
doc.Save();
return t.nsecsElapsed() / 1000000;
}

Что я делаю не так?

0 ответов

Другие вопросы по тегам