StupidBeauty
Read times:743Posted at:Fri Oct 12 22:58:42 2012
- no title specified

Qt4.8文档翻译:QFutureWatcher类参考,QFutureWatcher Class Reference

详细描述

QFutureWatcher类使得妳可以用信号和信号槽来跟踪 QFuture 的变化。

QFutureWatcher提供了关于一个 QFuture 的信息和通知功能。使用 setFuture ()函数来开始跟踪一个特定的 QFuture future ()函数会返回之前使用 setFuture ()设置的未来对象。

为了方便起见, QFuture 的狠多函数在QFutureWatcher 中也有: progressValue ()、 progressMinimum ()、 progressMaximum ()、 progressText ()、 isStarted ()、 isFinished ()、 isRunning ()、 isCanceled ()、 isPaused ()、 waitForFinished ()、 result ()和 resultAt ()。 cancel ()、 setPaused ()、 pause ()、 resume ()和 togglePaused ()函数在QFutureWatcher 中是信号槽。

状态的变化是通过 started ()、 finished ()、 canceled ()、 paused ()、 resumed ()、 resultReadyAt ()和 resultsReadyAt ()这些信号来报告的。进度信息是通过 progressRangeChanged ()、void progressValueChanged ()和 progressTextChanged ()这些信号来报告的。

速度(Throttling)控制功能是由 setPendingResultsLimit ()函数提供的。当队列中积压的 resultReadyAt ()或 resultsReadyAt ()信号的个数超过了限制的时候,对应的未来对象所表示的计算过程会被自动暂停(throttled)。当积压的信号的个数降到限制值以下的时候,计算会继续。

示例:启动一个计算,并且在计算完毕的时候通过信号槽回调函数来处理结果:

//初始化对象,并且连接到已完成(finished)信号。

MyClass myObject;

QFutureWatcher < int > watcher;

connect (&watcher, SIGNAL(finished()), &myObject, SLOT(handleFinished()));

//开始计算。

QFuture < int > future = QtConcurrent ::run(...);

watcher. setFuture (future);

注意,并非所有的异步计算都可以被取消或暂停。例如,由 QtConcurrent::run ()返回的未来对象就不可以被取消;而由 QtConcurrent::mappedReduced ()返回的未来对象就可以被取消。

QFutureWatcher<void>是一种特殊的跟踪器:它不包含任何的获取结果的函数。同时任何类型的 QFuture <T>都可以被QFutureWatcher<void>跟踪。在这种情况下有用:妳只关心状态或者进度信息;却不关心实际的计算结果。

参考 QFuture Qt Concurrent

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands

 
Recent comments
2017年4月~2019年4月垃圾短信排行榜Posted at:Thu Sep 26 04:51:48 2024
Qt5.7文档翻译:QWebEngineCookieStore类,QWebEngineCookieStore ClassPosted at:Fri Aug 11 06:50:35 2023盲盒kill -9 18289 Grebe.20230517.211749.552.mp4