Соединение сигналов / слотов в отдельном потоке с помощью QtConcurrent :: run

В моем приложении у меня есть следующий код в диалоге:

connect(drive, SIGNAL(FileProgressChanged(Progress)), SLOT(OnFileProgressChanged(Progress)));

QtConcurrent::run(this, &ProgressDialog::PerformOperation, Operation, *Path, OutPath, drive);

Функция PerformOperation в конечном итоге вызывает функцию вdrive который излучает сигналFileProgressChanged, и мойOnFileProgressChanged Функция выглядит следующим образом:

void ProgressDialog::OnFileProgressChanged(Progress p)
{
    if (ui->progressCurrent->maximum() != p.Maximium)
        ui->progressCurrent->setMaximum(p.Maximium);

    ui->progressCurrent->setValue(p.Current);

    if (ui->groupBoxCurrent->title().toStdString() != p.FilePath)
        ui->groupBoxCurrent->setTitle(QString::fromStdString(p.FilePath));
}

Я немного читал и увидел, чтоQFuture а такжеQFutureWatcher поддерживать мониторинг значений прогресса (что будет прекрасно работать в этой ситуации!), но их нельзя использовать вместе сQtConcurrent::run.

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

*Редактировать -- * На самом деле я обнаружил ошибку в своем коде, но, похоже, это не влияет. Я забыл добавитьthis в качестве аргумента после сигнала

connect(drive, SIGNAL(FileProgressChanged(Progress)), this, SLOT(OnFileProgressChanged(Progress)));

Ответы на вопрос(2)

Ваш ответ на вопрос