Spec-Zone.ru › Qt 5.6

Класс QFutureWatcher

Класс QFutureWatcher позволяет отслеживать QFuture с помощью сигналов и слотов. Подробнее...

Заголовок: #include <QFutureWatcher>
qmake: QT += core
С тех пор: Qt 4.4
Наследует: QFutureWatcherBase
  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются перевходящими.

Открытые функции

QFutureWatcher(QObject *parent = 0)
~QFutureWatcher()
QFuture<T> future() const
bool isCanceled() const
bool isFinished() const
bool isPaused() const
bool isRunning() const
bool isStarted() 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()
  • 12 открытых функций, унаследованных от QFutureWatcherBase
  • 31 открытых функций, унаследованных от QObject

Открытые слоты

void cancel()
void pause()
void resume()
void setPaused(bool paused)
void togglePaused()
  • 5 открытых слотов, унаследованных от QFutureWatcherBase
  • 1 открытый слот, унаследованный от QObject

Сигналы

void canceled()
void finished()
void paused()
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()
  • 10 сигналов, унаследованных от QFutureWatcherBase
  • 2 сигнала, унаследованных от QObject

Дополнительные унаследованные члены

  • 1 свойство, унаследованное от QObject
  • 11 статических открытых членов, унаследованных от QObject
  • 2 защищенных функции, унаследованные от QFutureWatcherBase
  • 9 защищенных функций, унаследованных от QObject

Подробное описание

Класс 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().

Управление лимитом предоставляется функцией setPendingResultsLimit(). Когда количество ожидающих сигналов resultReadyAt() или resultsReadyAt() превышает лимит, вычисление, представленное будущим, будет автоматически ограничено. Вычисление возобновится, когда количество ожидающих сигналов опустится ниже лимита.

Пример: запуск вычисления и получение обратного вызова слота, когда оно завершится:

// Instantiate the objects and connect to the finished signal.
MyClass myObject;
QFutureWatcher<int> watcher;
connect(&watcher, SIGNAL(finished()), &myObject, SLOT(handleFinished()));

// Start the computation.
QFuture<int> future = QtConcurrent::run(...);
watcher.setFuture(future);

Обратите внимание, что не все асинхронные вычисления могут быть отменены или приостановлены. Например, будущее, возвращаемое QtConcurrent::run(), не может быть отменено, но будущее, возвращаемое QtConcurrent::mappedReduced(), может.

QFutureWatcher<void> специализируется на том, чтобы не содержать ни одной из функций извлечения результатов. Любой QFuture<T> может быть отслежен QFutureWatcher<void> также. Это полезно, если требуется только информация о состоянии или прогрессе, а не фактические данные результатов.

См. также QFuture и Qt Concurrent.

Документация по функциям-членам

QFutureWatcher::QFutureWatcher(QObject *parent = 0)

Создаёт новый QFutureWatcher с заданным parent.

QFutureWatcher::~QFutureWatcher()

Уничтожает QFutureWatcher.

[slot] void QFutureWatcher::cancel()

Отменяет асинхронное вычисление, представленное future(). Обратите внимание, что отмена является асинхронной. Используйте waitForFinished() после вызова cancel(), если вам нужна синхронная отмена.

Текущие доступные результаты по-прежнему могут быть доступны для отменённого QFuture, но новые результаты не станут доступны после вызова этой функции. Кроме того, этот QFutureWatcher не будет передавать сигналы готовности прогресса и результата после отмены. Это включает сигналы progressValueChanged(), progressRangeChanged(), progressTextChanged(), resultReadyAt() и resultsReadyAt().

Помните, что не все асинхронные вычисления могут быть отменены. Например, QFuture, возвращённый QtConcurrent::run(), отменить нельзя; но QFuture, возвращённый QtConcurrent::mappedReduced(), можно.

[signal] void QFutureWatcher::canceled()

Этот сигнал генерируется, если отслеживаемое future отменено.

[signal] void QFutureWatcher::finished()

Этот сигнал генерируется, когда отслеживаемое future завершается.

QFuture<T> QFutureWatcher::future() const

Возвращает отслеживаемое future.

См. также setFuture().

bool QFutureWatcher::isCanceled() const

Возвращает true , если асинхронное вычисление было отменено функцией cancel(); в противном случае возвращает false.

Обратите внимание, что вычисление может всё ещё выполняться, даже если эта функция возвращает true. Для получения более подробной информации см. cancel().

bool QFutureWatcher::isFinished() const

Возвращает true , если асинхронное вычисление, представленное future(), завершилось, или если future не было задано; в противном случае возвращает false.

bool QFutureWatcher::isPaused() const

Возвращает true , если асинхронное вычисление было приостановлено с помощью функции pause(); в противном случае возвращает false.

Обратите внимание, что вычисление может всё ещё выполняться, даже если эта функция возвращает true. См. setPaused() для получения более подробной информации.

См. также setPaused() и togglePaused().

bool QFutureWatcher::isRunning() const

Возвращает true , если асинхронное вычисление, представленное future(), в настоящее время выполняется; в противном случае возвращает false.

bool QFutureWatcher::isStarted() const

Возвращает true , если асинхронное вычисление, представленное future(), было запущено; в противном случае возвращает false.

[slot] void QFutureWatcher::pause()

Приостанавливает асинхронное вычисление, представленное future(). Это вспомогательный метод, который просто вызывает setPaused(true).

См. также resume().

[signal] void QFutureWatcher::paused()

Этот сигнал генерируется, когда отслеживаемое future приостанавливается.

См. также setPaused().

int QFutureWatcher::progressMaximum() const

Возвращает максимальное значение progressValue().

См. также progressValue() и progressMinimum().

int QFutureWatcher::progressMinimum() const

Возвращает минимальное значение progressValue().

См. также progressValue() и progressMaximum().

[signal] void QFutureWatcher::progressRangeChanged(int minimum, int maximum)

Диапазон прогресса для отслеживаемого future изменился на minimum и maximum

QString QFutureWatcher::progressText() const

Возвращает (необязательное) текстовое представление прогресса, как сообщается асинхронным вычислением.

Обратите внимание, что не все вычисления предоставляют текстовое представление прогресса, и поэтому эта функция может возвращать пустую строку.

[signal] void QFutureWatcher::progressTextChanged(const QString &progressText)

Этот сигнал генерируется, когда отслеживаемое future сообщает текстовую информацию о прогрессе, progressText.

int QFutureWatcher::progressValue() const

Возвращает текущее значение прогресса, которое находится между progressMinimum() и progressMaximum().

См. также progressMinimum() и progressMaximum().

[signal] void QFutureWatcher::progressValueChanged(int progressValue)

Этот сигнал генерируется, когда отслеживаемое future сообщает о прогрессе, progressValue указывает текущий прогресс. Для предотвращения перегрузки цикла событий графического интерфейса, QFutureWatcher ограничивает скорость выдачи сигналов прогресса. Это означает, что слушатели, подключенные к этому слоту, могут не получить все сообщения о прогрессе, отправленные future. Последнее обновление прогресса (где progressValue равно максимальному значению) всегда будет доставлено.

T QFutureWatcher::result() const

Возвращает первый результат в future(). Если результат немедленно недоступен, эта функция заблокируется и будет ждать, пока результат не станет доступным. Это вспомогательный метод для вызова resultAt(0).

См. также resultAt().

T QFutureWatcher::resultAt(int index) const

Возвращает результат по индексу index в future(). Если результат немедленно недоступен, эта функция заблокируется и будет ждать, пока результат не станет доступным.

См. также result().

[signal] void QFutureWatcher::resultReadyAt(int index)

Этот сигнал генерируется, когда отслеживаемое future сообщает о готовом результате по индексу index. Если future сообщает о нескольких результатах, индекс укажет, какой именно это результат. Результаты могут сообщаться вне очереди. Чтобы получить результат, вызовите future().result(index);

[signal] void QFutureWatcher::resultsReadyAt(int beginIndex, int endIndex)

Этот сигнал генерируется, когда отслеживаемое future сообщает о готовых результатах. Результаты индексируются от beginIndex до endIndex.

[slot] void QFutureWatcher::resume()

Возобновляет асинхронное вычисление, представленное future(). Это вспомогательный метод, который просто вызывает setPaused(false).

См. также pause().

[signal] void QFutureWatcher::resumed()

Этот сигнал генерируется, когда отслеживаемое future возобновляется.

void QFutureWatcher::setFuture(const QFuture<T> &future)

Начинает отслеживание заданного future.

Один из сигналов может быть сгенерирован для текущего состояния future. Например, если future уже остановлен, будет сгенерирован сигнал finished.

Для предотвращения гонки важно вызвать эту функцию после выполнения подключений.

См. также future().

[slot] void QFutureWatcher::setPaused(bool paused)

Если paused имеет значение true, эта функция приостанавливает асинхронное вычисление, представленное задачей (future). Если вычисление уже приостановлено, функция ничего не делает. Этот QFutureWatcher перестанет передавать сигналы готовности прогресса и результата, пока задача приостановлена. Передача сигналов продолжится, как только вычисление будет возобновлено.

Если paused имеет значение false, эта функция возобновляет асинхронное вычисление. Если вычисление ранее не было приостановлено, функция ничего не делает.

Обратите внимание, что не все вычисления могут быть приостановлены. Например, QFuture, возвращаемая функцией QtConcurrent::run(), приостановить нельзя; но QFuture, возвращаемая функцией QtConcurrent::mappedReduced(), можно.

См. также paused(), pause(), resume() и togglePaused().

void QFutureWatcher::setPendingResultsLimit(int limit)

setPendingResultsLimit() обеспечивает управление ограничением потока. Когда количество ожидающих сигналов resultReadyAt() или resultsReadyAt() превышает limit, вычисление, представленное задачей, будет автоматически ограничено. Вычисление возобновится, когда количество ожидающих сигналов станет меньше limit.

[signal] void QFutureWatcher::started()

Этот сигнал испускается, когда этот QFutureWatcher начинает отслеживать задачу, установленную с помощью setFuture().

[slot] void QFutureWatcher::togglePaused()

Переключает состояние приостановки асинхронного вычисления. Другими словами, если вычисление в данный момент приостановлено, вызов этой функции возобновляет его; если вычисление выполняется, оно приостанавливается. Это удобный метод вызова setPaused(!isPaused()).

См. также setPaused(), pause() и resume().

void QFutureWatcher::waitForFinished()

Ожидает завершения асинхронного вычисления (включая отменённые вычисления (cancel()).

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qfuturewatcher.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API