There should be no such delay in QFutureWatcher. I've never seen that, and I've used QtConcurrent::run/mapped + QFutureWatcher quite a lot.
I would investigate that before making my own mechanism. Elvis Den lör 2 mars 2019 kl 21:13 skrev Sylvain Pointeau <sylvain.point...@gmail.com>: > > Dear all, > > I made an action processed in another thread in QML, and I would like your > review. > > When in QML, I click on a button, I send a signal to an object > "TaskProcessor" (declared in QML) to start the action. > Within this slot I start a future with QtConcurrent. > > Before I was using QFutureWatcher to know when the future is finished, but I > observed a delay of 1 seconde if the future was taking 4 secondes to complete. > so now I use one object ("TaskNotifier") instantiated in the concurrent > lambda, that connect to "this", and trigger a message to "TaskProcessor" when > it finishes. > TaskProcessor then triggers a signal to QML with the result. > > Is this approach good? I was wondering if this is really the way to follow > Do you use another approach? > > in QML: > > Button { > > id: btnStart > > text: "Start" > > > onClicked: { > > output.text = "computing..." > > taskc.doCalculation(Number(p1.text),Number(p2.text)) > > enabled = false > > } > > } > > > TaskComputer { > > id: taskc > > > onCalculationFinished: { > > btnStart.enabled = true > > > // do something with rs > > } > > > } > > > in C++: > > void TaskComputer::doCalculation(int p1, int p2) > > { > > QFuture<void> f1 = QtConcurrent::run( [this, p1, p2]() -> int { > > > TaskNotifier tnotifier; > > connect(&tnotifier, &TaskNotifier::finished, this, > &TaskComputer::futureFinished); > > > // do the task > > > TaskResult tres(/*...my results...*/); > > > emit tnotifier.finished(tres); > > } ); > > } > > > void TaskComputer::futureFinished(TaskResult rs) > > { > > // do some stuff > > > emit calculationFinished(rs); > > } > > > Best regards, > Sylvain > > > > _______________________________________________ > Interest mailing list > Interest@qt-project.org > https://lists.qt-project.org/listinfo/interest _______________________________________________ Interest mailing list Interest@qt-project.org https://lists.qt-project.org/listinfo/interest