我有一系列任务需要在一组图像上进行。我想一个接一个地运行 3 个步骤,但中间的一个需要连续运行,因为它依赖于所有先前迭代的结果。我想要的是使用QFutureWatcher
. 我已经有其他任务可以执行此操作并连接到进度条等,所以如果可以的话,我可以使用相同的过程。我正在考虑实现的方式是拥有一个内部QFuture
并QFutureWatcher
运行每个任务,以及一个外部QFutureWatcher
监控此任务并将信息中继到 UI。也许是这样的(伪代码):
runProcessingTask() {
connect(externalFutureWatcher, UI elements)
internalFuture = start first task
internalFutureWatcher.setFuture(internalFuture)
connect(internalFuture.finished(), taskfinished())
connect(internalFuture.progressValue(), updateProgress())
taskNumber = 1
}
taskFinished() {
switch(taskNumber):
case 1:
internalFuture = start second task
internalFutureWatcher.setFuture(internalFuture)
taskNumber = 2
case 2:
internalFuture = start third task
internalFutureWatcher.setFuture(internalFuture)
taskNumber = 3
case 3:
externalFutureWatcher.setFinished()
}
updateProgress() {
switch(taskNumber):
case 1:
extrenalFutureWatcher.setProgress(internalFutureWatcher.progress() / 3)
case 2:
extrenalFutureWatcher.setProgress(33.3% + (internalFutureWatcher.progress() / 3))
case 3:
extrenalFutureWatcher.setProgress(66.6% + (internalFutureWatcher.progress() / 3))
}
这样的事情可能吗?我只需要重写一些方法QFutureWatcher
并将它们用作我的 externalFutureWatcher 吗?或者以这种方式不可能/有更好的方法吗?