QFutureWatcher Class

template <typename T> class QFutureWatcher

QFutureWatcher 클래스를 사용하면 신호와 슬롯을 사용하여 QFuture 을 모니터링할 수 있습니다. 더 보기...

Header: #include <QFutureWatcher>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
상속합니다: QObject

참고: 이 클래스의 모든 함수는 재진입됩니다.

공용 함수

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()

Signals

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()로 설정된 미래를 반환합니다.

편의를 위해 progressValue(), progressMinimum(), progressMaximum(), progressText(), isStarted(), isFinished(), isRunning(), isCanceled(), isSuspending(), isSuspended(), waitForFinished(), result() 및 resultAt() 등 QFuture 의 여러 함수도 QFutureWatcher에서 사용할 수 있습니다. cancel (), setSuspended(), suspend(), resume() 및 toggleSuspended() 함수는 QFutureWatcher의 슬롯입니다.

상태 변경은 started(), finished(), canceled(), suspending(), suspended(), resumed(), resultReadyAt(), resultsReadyAt() 시그널을 통해 보고됩니다. 진행 상황 정보는 progressRangeChanged(), void progressValueChanged() 및 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>는 결과 가져오기 함수를 포함하지 않도록 특화되어 있습니다. 모든 QFuture<T>도 QFutureWatcher<void>에 의해 감시될 수 있습니다. 이는 실제 결과 데이터가 아닌 상태 또는 진행률 정보만 필요한 경우에 유용합니다.

QFutureQt Concurrent.

멤버 함수 문서

[explicit] QFutureWatcher::QFutureWatcher(QObject *parent = nullptr)

주어진 parent 로 새로운 QFutureWatcher를 구축합니다. setFuture ()로 미래가 설정될 때까지 isStarted(), isCanceled(), isFinished() 함수는 true 를 반환합니다.

[virtual] QFutureWatcher::~QFutureWatcher()

QFutureWatcher 를 파괴합니다.

[slot] void QFutureWatcher::cancel()

future()로 표시되는 비동기 계산을 취소합니다. 취소는 비동기식이라는 점에 유의하세요. 동기식 취소가 필요한 경우 취소()를 호출한 후 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() 함수로 취소되었거나 미래가 설정되지 않은 경우 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.

이 함수가 true 을 반환하더라도 계산이 계속 실행 중일 수 있다는 점에 유의하세요. 자세한 내용은 cancel()를 참조하세요.

bool QFutureWatcher::isFinished() const

future()로 표시되는 비동기 계산이 완료되었거나 미래가 설정되지 않은 경우 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.

bool QFutureWatcher::isRunning() const

future()로 표시되는 비동기 계산이 현재 실행 중이면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

bool QFutureWatcher::isStarted() const

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)

미래 보기의 진행률 범위가 minimummaximum

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 은 진행률 신호 방출 속도를 제한합니다. 즉, 이 슬롯에 연결된 리스너는 미래의 모든 진행률 보고서를 받지 못할 수도 있습니다. 마지막 진행률 업데이트( 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(색인)을 호출하세요;

[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()는 사용 가능한 최신 진행률 값과 텍스트에 대해 한 번만 전송됩니다.

경쟁 조건을 피하려면 연결을 수행한 이 함수를 호출하는 것이 중요합니다.

future()도 참조하세요 .

void QFutureWatcher::setPendingResultsLimit(int limit)

setPendingResultsLimit()는 스로틀링 제어 기능을 제공합니다. 보류 중인 resultReadyAt() 또는 resultsReadyAt() 신호의 수가 limit 을 초과하면 미래로 표시되는 계산이 자동으로 스로틀됩니다. 보류 중인 신호 수가 limit 아래로 떨어지면 계산이 다시 시작됩니다.

[slot, since 6.0] void QFutureWatcher::setSuspended(bool suspend)

suspend 가 참이면 이 함수는 future()로 표시되는 비동기 계산을 일시 중단합니다. 계산이 이미 일시 중단된 경우 이 함수는 아무 작업도 수행하지 않습니다. QFutureWatcher 은 일시 중단 시 진행률 및 결과 준비 신호 전달을 즉시 중단하지 않습니다. 일시 중단하는 순간에도 여전히 진행 중이며 중지할 수 없는 계산이 있을 수 있습니다. 이러한 계산에 대한 신호는 계속 전달됩니다.

suspend 이 거짓이면 이 함수는 비동기 계산을 재개합니다. 이전에 계산이 일시 중단되지 않은 경우 이 함수는 아무 작업도 수행하지 않습니다.

모든 계산이 일시 중단될 수 있는 것은 아니라는 점에 유의하세요. 예를 들어, QtConcurrent::run()이 반환하는 QFuture 은 일시 중단할 수 없지만, QtConcurrent::mappedReduced()가 반환하는 QFuture 은 일시 중단할 수 있습니다.

이 함수는 Qt 6.0에 도입되었습니다.

suspended(), suspend(), resume() 및 toggleSuspended()도 참조하십시오 .

[signal] void QFutureWatcher::started()

이 신호는 setFuture()로 미래 세트를 보기 시작하면 QFutureWatcher 에서 방출됩니다.

[slot, since 6.0] void QFutureWatcher::suspend()

이 미래로 표현되는 비동기 계산을 일시 중단합니다. setSuspended (참)을 호출하기만 하면 되는 편리한 메서드입니다.

이 함수는 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()

이 신호는 시청 중인 미래의 상태가 일시 중단으로 설정된 경우에 발생합니다.

참고: 이 신호는 일시 중단이 요청되었음을 알리기만 합니다. 모든 백그라운드 작업이 중지되었음을 나타내지는 않습니다. 일시 중단 시점에 진행 중이던 계산에 대한 신호는 계속 전달됩니다. 일시 중단이 실제로 언제 적용되었는지 알려면 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.