Класс QFuture
имеет такие методы, как cancel()
, progressValue()
и т. д. По-видимому, их можно отслеживать через QFutureWatcher
. Однако в документации к QtConcurrent::run()
говорится:
Обратите внимание, что QFuture, возвращаемый функцией QtConcurrent::run() не поддерживает отмену, приостановку или отчет. Возвращаемое QFuture может может использоваться только для запроса состояние выполнения/завершения и возвращаемое значение функции.
Я тщетно искал, какой метод на самом деле может создать QFuture
, который может быть отменен и сообщать о ходе выполнения для одной долго выполняющейся операции. (Похоже, что QtConcurrent::map()
и подобные функции могут, но у меня просто один, долго выполняющийся метод.)
(Для тех, кто знаком с .Net, что-то вроде класса BackgroundWorker
. )
Какие есть варианты?