QFutureWatcher Class
template <typename T> class QFutureWatcherQFutureWatcherクラスは、シグナルとスロットを使ってQFuture 。さらに...
ヘッダー | #include <QFutureWatcher> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
継承: | QObject |
- 継承されたメンバを含むすべてのメンバのリスト
- 非推奨メンバー
- QFutureWatcher はThreading Classes の一部です。
注意:このクラスの関数はすべてリエントラントです。
パブリック関数
QFutureWatcher(QObject *parent = nullptr) | |
virtual | ~QFutureWatcher() |
QFuture<T> | future() const |
bool | isCanceled() const |
bool | isFinished() const |
bool | isRunning() const |
bool | isStarted() const |
(since 6.0) bool | isSuspended() const |
(since 6.0) bool | isSuspending() const |
int | progressMaximum() const |
int | progressMinimum() const |
QString | progressText() const |
int | progressValue() const |
T | result() const |
T | resultAt(int index) const |
void | setFuture(const QFuture<T> &future) |
void | setPendingResultsLimit(int limit) |
void | waitForFinished() |
パブリック・スロット
void | cancel() |
void | resume() |
(since 6.0) void | setSuspended(bool suspend) |
(since 6.0) void | suspend() |
(since 6.0) void | toggleSuspended() |
シグナル
void | canceled() |
void | finished() |
void | progressRangeChanged(int minimum, int maximum) |
void | progressTextChanged(const QString &progressText) |
void | progressValueChanged(int progressValue) |
void | resultReadyAt(int index) |
void | resultsReadyAt(int beginIndex, int endIndex) |
void | resumed() |
void | started() |
(since 6.0) void | suspended() |
(since 6.0) void | suspending() |
詳細説明
QFutureWatcher は、QFuture に関する情報と通知を提供します。setFuture() 関数を使用して、特定のQFuture の監視を開始します。future() 関数は、setFuture() で設定された未来を返します。
QFuture progressValue()、 ()、 ()、 ()、 ()、 ()、 ()、 ()、 ()、 ()、 ()、 ()、 (). ()、 ()、 ()、 ()、 ()関数は、QFutureWatcherのスロットです。progressMinimum progressMaximum progressText isStarted isFinished isRunning isCanceled isSuspending isSuspended waitForFinished result resultAt cancel setSuspended suspend resume toggleSuspended
ステータスの変更は、started()、finished()、canceled()、suspending()、suspended()、resumed()、resultReadyAt()、resultsReadyAt() シグナルによって報告される。進捗情報は、progressRangeChanged ()、voidprogressValueChanged ()、progressTextChanged ()シグナルから提供される。
スロットル制御は、setPendingResultsLimit ()関数によって提供される。保留中のresultReadyAt() またはresultsReadyAt() シグナルの数が制限を超えると、未来で表される計算が自動的にスロットルされる。保留中のシグナルの数が制限値を下回ると、計算が再開されます。
例例:計算を開始し、終了時にスロットのコールバックを取得する:
// Instantiate the objects and connect to the finished signal. MyClass myObject; QFutureWatcher<int> watcher; connect(&watcher, &QFutureWatcher<int>::finished, &myObject, &MyClass::handleFinished); // Start the computation. QFuture<int> future = QtConcurrent::run(...); watcher.setFuture(future);
実行中のすべての非同期計算をキャンセルまたは中断できるわけではないことに注意してください。例えば、QtConcurrent::run() が返す未来はキャンセルできませんが、QtConcurrent::mappedReduced() が返す未来はキャンセルできます。
QFutureWatcher<void> は、結果フェッチ関数を含まないように特化されています。QFutureWatcher<void> は、どのようなQFuture<T> でもウォッチすることができます。これは、実際の結果データではなく、ステータスや進捗情報のみが必要な場合に便利です。
QFuture および Qt Concurrent.
メンバ関数ドキュメント
[explicit]
QFutureWatcher::QFutureWatcher(QObject *parent = nullptr)
与えられたparent で新しい QFutureWatcher を構築する。setFuture() で未来が設定されるまでは、関数isStarted(),isCanceled(),isFinished() はtrue
を返します。
[virtual]
QFutureWatcher::~QFutureWatcher()
QFutureWatcher を破壊する。
[slot]
void QFutureWatcher::cancel()
future() で表される非同期計算をキャンセルする。キャンセルは非同期であることに注意。同期キャンセルが必要な場合は、cancel() を呼び出した後にwaitForFinished() を使用します。
現在利用可能な結果は、キャンセルされたQFuture でもアクセス可能であるが、この関数を呼 んだ後は、新しい結果は利用できなくなる。また、このQFutureWatcher は、一度キャンセルされると、進行状況シグナルと結果準備完了シグナルを送 信しません。これには、progressValueChanged ()、progressRangeChanged ()、progressTextChanged ()、resultReadyAt ()、resultsReadyAt ()の各シグナルが含まれる。
実行中のすべての非同期計算をキャンセルできるわけではないことに注意。例えば、QtConcurrent::run() が返すQFuture はキャンセルできませんが、QtConcurrent::mappedReduced() が返すQFuture はキャンセルできます。
[signal]
void QFutureWatcher::canceled()
このシグナルは、ウォッチされている未来がキャンセルされた場合に発せられる。
[signal]
void QFutureWatcher::finished()
このシグナルは、監視されている未来が終了したときに発せられる。
QFuture<T> QFutureWatcher::future() const
監視されている未来を返します。
setFuture()も参照 。
bool QFutureWatcher::isCanceled() const
非同期計算がcancel() 関数でキャンセルされた場合、または future が設定されていない場合はtrue
を返し、そうでない場合はfalse
を返す。
そうでない場合はtrue
を返します。この関数が を返しても、まだ計算が実行されている可能性があることに注意してください。詳細はcancel() を参照。
bool QFutureWatcher::isFinished() const
future() で表される非同期計算が終了した場合、または future が設定されていない場合はtrue
を返し、そうでない場合はfalse
を返す。
bool QFutureWatcher::isRunning() const
future() で表される非同期計算が現在実行中であればtrue
を返し、そうでなければfalse
を返す。
bool QFutureWatcher::isStarted() const
future() で表される非同期計算が開始された場合、または future が設定されていない場合はtrue
を返し、そうでない場合はfalse
を返す。
[since 6.0]
bool QFutureWatcher::isSuspended() const
非同期計算の一時停止が要求され、それが有効である場合、つまり、これ以上の結果や進捗の変更が期待されない場合にtrue
を返します。
この関数は Qt 6.0 で導入されました。
suspended(),setSuspended(),isSuspending()も参照してください 。
[since 6.0]
bool QFutureWatcher::isSuspending() const
非同期計算がsuspend() 関数で中断されたが、まだ中断されておらず、計算が実行中である場合、true
を返す。それ以外の場合はfalse
を返す。
サスペンドが実際に有効かどうかを確認するには、代わりにisSuspended() を使用します。
この関数は Qt 6.0 で導入されました。
setSuspended(),toggleSuspended(),isSuspended()も参照してください 。
int QFutureWatcher::progressMaximum() const
progressValue() の最大値を返す。
progressValue() およびprogressMinimum()も参照 。
int QFutureWatcher::progressMinimum() const
progressValue() の最小値を返す。
progressValue() およびprogressMaximum()も参照 。
[signal]
void QFutureWatcher::progressRangeChanged(int minimum, int maximum)
今後の進捗範囲は、minimum に変更された。maximum
QString QFutureWatcher::progressText() const
非同期計算によって報告された進捗のテキスト表現(オプション)を返します。
すべての計算が進行状況のテキスト表現を提供するわけではないことに注意してください。
[signal]
void QFutureWatcher::progressTextChanged(const QString &progressText)
このシグナルは、ウォッチされているフューチャーがテキストによる進捗情報を報告するときに発せられるprogressText 。
int QFutureWatcher::progressValue() const
progressMinimum() とprogressMaximum() の間にある現在の進捗値を返す。
progressMinimum() およびprogressMaximum()も参照 。
[signal]
void QFutureWatcher::progressValueChanged(int progressValue)
このシグナルはウォッチされたフューチャーが進捗を報告するときに発せられる。progressValue は現在の進捗を与える。GUIイベントループの過負荷を避けるために、QFutureWatcher 、進捗シグナルの発信率を制限しています。つまり、このスロットに接続されたリスナーは、futureが行うすべての進捗報告を取得できない可能性があります。最後の進捗更新(progressValue が最大値に等しい)は常に配信されます。
template <typename U = T, typename = QtPrivate::EnableForNonVoid<U>> T QFutureWatcher::result() const
future() の最初の結果を返す。結果がすぐに利用可能でない場合、この関数はブロックして結果が利用可能になるのを待ちます。これは、resultAt(0) を呼び出すための便利なメソッドである。
resultAt()も参照 。
template <typename U = T, typename = QtPrivate::EnableForNonVoid<U>> T QFutureWatcher::resultAt(int index) const
future() のindex にある結果を返す。結果がすぐに利用できない場合、この関数はブロックして結果が利用できるようになるまで待ちます。
result()も参照のこと 。
[signal]
void QFutureWatcher::resultReadyAt(int index)
このシグナルは、ウォッチされている未来がindex で準備完了の結果を報告したときに発せられます。未来が複数の結果を報告した場合、インデックスがどの結果かを示します。結果は順番に報告されません。結果を得るには、resultAt(index) を呼び出します;
[signal]
void QFutureWatcher::resultsReadyAt(int beginIndex, int endIndex)
このシグナルは、ウォッチされたフューチャーが準備完了の結果を報告するときに発せられる。結果のインデックスはbeginIndex からendIndex までです。
[slot]
void QFutureWatcher::resume()
future() で表される非同期計算を再開する。これはsetSuspended(false) を呼び出すだけの便利なメソッドです。
suspend()も参照 。
[signal]
void QFutureWatcher::resumed()
このシグナルは、監視されている未来が再開されるときに発せられる。
void QFutureWatcher::setFuture(const QFuture<T> &future)
与えられたfuture のウォッチングを開始する。
future がすでに開始されている場合、ウォッチャーは最初にシグナルを発し、リスナーに未来の状態を知らせる。started()、progressRangeChanged()、progressValueChanged()、progressTextChanged()、resultsReadyAt()、resultReadyAt()、suspending()、suspended()、canceled()、finished()。このうち、resultsReadyAt () とresultReadyAt ()は、利用可能な結果をすべて網羅するために、数回発 行されることがある。progressValueChanged() とprogressTextChanged() は、利用可能な最新の進捗値とテキストに対して1回だけ発行される。
競合状態を回避するには、接続を行った後でこの関数を呼び出すことが重要である。
future()も参照 。
void QFutureWatcher::setPendingResultsLimit(int limit)
setPendingResultsLimit() は、スロットリング制御を提供する。保留中のresultReadyAt() またはresultsReadyAt() シグナルの数がlimit を超えると、future で表される計算が自動的にスロットルされます。保留中のシグナルの数がlimit を下回ると、計算が再開されます。
[slot, since 6.0]
void QFutureWatcher::setSuspended(bool suspend)
suspend が真の場合、この関数はfuture() で表される非同期計算を一時停止する。計算がすでに中断されている場合、この関数は何もしない。QFutureWatcher 、未来が中断されても、進行状況と結果準備完了シグナルの配信が直ちに停止されるわけではない。中断された時点では、まだ進行中の計算があり、それを停止することはできません。そのような計算のシグナルはまだ配信されます。
suspend が false の場合、この関数は非同期計算を再開する。計算が中断されていない場合、この関数は何もしない。
すべての計算を中断できるわけではないことに注意してください。例えば、QtConcurrent::run() が返すQFuture は中断できませんが、QtConcurrent::mappedReduced() が返すQFuture は中断できます。
この関数は Qt 6.0 で導入されました。
suspended(),suspend(),resume(),toggleSuspended()も参照してください 。
[signal]
void QFutureWatcher::started()
このシグナルは、QFutureWatcher がsetFuture() で設定された未来の監視を開始したときに発せられる。
[slot, since 6.0]
void QFutureWatcher::suspend()
この future で表される非同期計算を一時停止します。これはsetSuspended(true) を呼び出すだけの便利なメソッドです。
この関数は Qt 6.0 で導入されました。
resume()も参照してください 。
[signal, since 6.0]
void QFutureWatcher::suspended()
このシグナルは、suspend ()が有効になったとき、つまり実行中の計算がなくなったときに発せられる。このシグナルを受け取った後は、結果の準備完了や進捗報告のシグナルは期待されません。
この関数は Qt 6.0 で導入されました。
setSuspended(),suspend(), suspended()も参照してください 。
[signal, since 6.0]
void QFutureWatcher::suspending()
このシグナルは、監視されている未来の状態が suspend に設定されたときに発行される。
注意: このシグナルは、一時停止が要求されたことを通知するだけです。すべてのバックグラウンド処理が停止したことを示すものではありません。サスペンドされた時点で進行中だった計算のシグナルはまだ送られます。サスペンドが実際に有効になったことを通知するには、suspended() シグナルを使用してください。
この関数はQt 6.0で導入されました。
setSuspended(),suspend(),suspended()も参照してください 。
[slot, since 6.0]
void QFutureWatcher::toggleSuspended()
非同期計算のサスペンド状態を切り替える。言い換えると、計算が現在サスペンド中または中断中の場合、この関数を呼び出すと再開され、計算が実行中の場合は中断される。これはsetSuspended(!(isSuspending() ||isSuspended())) を呼び出すための便利なメソッドです。
この関数は Qt 6.0 で導入されました。
setSuspended(),suspend(),resume()も参照してください 。
void QFutureWatcher::waitForFinished()
非同期計算(cancel()された計算を含む)が終了するまで、すなわちisFinished()がtrue
を返すまで待つ。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.