Spec-Zone.ru › Qt 5.6

Класс QProgressDialog

Класс QProgressDialog предоставляет обратную связь о ходе выполнения медленной операции. Подробнее...

Заголовок: #include <QProgressDialog>
qmake: QT += widgets
Наследует: QDialog
  • Список всех членов, включая унаследованные

Свойства

  • autoClose : bool
  • autoReset : bool
  • labelText : QString
  • maximum : int
  • minimum : int
  • minimumDuration : int
  • value : int
  • wasCanceled : const bool
  • 2 свойства унаследованы от QDialog
  • 58 свойств унаследовано от QWidget
  • 1 свойство унаследовано от QObject

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

QProgressDialog(QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())
QProgressDialog(const QString &labelText, const QString &cancelButtonText, int minimum, int maximum, QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())
~QProgressDialog()
bool autoClose() const
bool autoReset() const
QString labelText() const
int maximum() const
int minimum() const
int minimumDuration() const
void open(QObject *receiver, const char *member)
void setAutoClose(bool close)
void setAutoReset(bool reset)
void setBar(QProgressBar *bar)
void setCancelButton(QPushButton *cancelButton)
void setLabel(QLabel *label)
int value() const
bool wasCanceled() const

Переопределённые открытые функции

virtual QSize sizeHint() const
  • 8 открытых функций унаследовано от QDialog
  • 211 открытых функций унаследовано от QWidget
  • 31 открытых функций унаследовано от QObject
  • 14 открытых функций унаследовано от QPaintDevice

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

void cancel()
void reset()
void setCancelButtonText(const QString &cancelButtonText)
void setLabelText(const QString &text)
void setMaximum(int maximum)
void setMinimum(int minimum)
void setMinimumDuration(int ms)
void setRange(int minimum, int maximum)
void setValue(int progress)
  • 5 открытых слотов унаследовано от QDialog
  • 19 открытых слотов унаследовано от QWidget
  • 1 открытый слот унаследовано от QObject

Сигналы

void canceled()
  • 3 сигнала унаследовано от QDialog
  • 3 сигнала унаследовано от QWidget
  • 2 сигнала унаследовано от QObject

Переопределённые защищённые функции

virtual void changeEvent(QEvent *ev)
virtual void closeEvent(QCloseEvent *e)
virtual void resizeEvent(QResizeEvent *event)
virtual void showEvent(QShowEvent *e)
  • 7 защищённых функций унаследовано от QDialog
  • 35 защищённых функций унаследовано от QWidget
  • 9 защищённых функций унаследовано от QObject
  • 1 защищённая функция унаследовано от QPaintDevice

Защищённые слоты

void forceShow()
  • 1 защищённый слот унаследовано от QWidget

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

  • 5 статических открытых членов унаследовано от QWidget
  • 11 статических открытых членов унаследовано от QObject
  • 7 защищённых функций унаследовано от QDialog
  • 35 защищённых функций унаследовано от QWidget
  • 9 защищённых функций унаследовано от QObject
  • 1 защищённая функция унаследовано от QPaintDevice

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

Класс QProgressDialog предоставляет обратную связь о ходе выполнения медленной операции.

Диалоговое окно прогресса используется для информирования пользователя о том, сколько времени займёт операция, и для демонстрации того, что приложение не зависло. Оно также может предоставить пользователю возможность прервать операцию.

Распространённая проблема с диалоговыми окнами прогресса заключается в том, что трудно определить, когда их использовать; операции занимают разное время на разных устройствах. QProgressDialog предлагает решение этой проблемы: он оценивает время выполнения операции (на основе времени для шагов) и отображается только в том случае, если эта оценка превышает minimumDuration() (по умолчанию 4 секунды).

Используйте setMinimum() и setMaximum() или конструктор для задания количества «шагов» в операции и вызов setValue() по мере выполнения операции. Количество шагов можно выбрать произвольно. Это может быть количество скопированных файлов, количество полученных байтов, количество итераций по главному циклу вашего алгоритма или любая другая подходящая единица измерения. Прогресс начинается со значения, заданного setMinimum(), и диалоговое окно прогресса показывает, что операция завершена, когда вы вызываете setValue() со значением, заданным setMaximum(), в качестве аргумента.

Диалог автоматически сбрасывается и скрывается в конце операции. Используйте setAutoReset() и setAutoClose() для изменения этого поведения. Обратите внимание, что если вы зададите новое максимальное значение (с помощью setMaximum() или setRange()), равное текущему значению value(), диалог не закроется независимо.

Существует два способа использования QProgressDialog: модальный и безызмодальный.

По сравнению с безызмодальным QProgressDialog, модальный QProgressDialog проще использовать для программиста. Выполняйте операцию в цикле, вызывайте setValue() через определённые интервалы и проверяйте отмену с помощью wasCanceled(). Например:

    QProgressDialog progress("Copying files...", "Abort Copy", 0, numFiles, this);
    progress.setWindowModality(Qt::WindowModal);

    for (int i = 0; i < numFiles; i++) {
        progress.setValue(i);

        if (progress.wasCanceled())
            break;
        //... copy one file
    }
    progress.setValue(numFiles);

Безызмодальное диалоговое окно прогресса подходит для операций, которые выполняются в фоновом режиме, где пользователь может взаимодействовать с приложением. Такие операции обычно основаны на QTimer (или QObject::timerEvent()), QSocketNotifier или QUrlOperator; или выполняются в отдельном потоке. QProgressBar в строке состояния вашего основного окна часто является альтернативой безызмодальному диалоговому окну прогресса.

Вам необходимо иметь запущенный цикл событий, подключить сигнал canceled() к слоту, который останавливает операцию, и вызывать setValue() через определённые интервалы. Например:

// Operation constructor
Operation::Operation(QObject *parent)
    : QObject(parent), steps(0)
{
    pd = new QProgressDialog("Operation in progress.", "Cancel", 0, 100);
    connect(pd, SIGNAL(canceled()), this, SLOT(cancel()));
    t = new QTimer(this);
    connect(t, SIGNAL(timeout()), this, SLOT(perform()));
    t->start(0);
}

void Operation::perform()
{
    pd->setValue(steps);
    //... perform one percent of the operation
    steps++;
    if (steps > pd->maximum())
        t->stop();
}

void Operation::cancel()
{
    t->stop();
    //... cleanup
}

В обоих режимах диалоговое окно прогресса можно настроить, заменив дочерние виджеты на пользовательские виджеты, используя setLabel(), setBar() и setCancelButton(). Функции setLabelText() и setCancelButtonText() устанавливают отображаемый текст.

A progress dialog shown in the Fusion widget style.

См. также QDialog, QProgressBar, Руководство по проектированию пользовательского интерфейса: индикатор прогресса, Пример Find Files и Пример Pixelator.

Документация свойств

autoClose : bool

Это свойство определяет, скрывает ли диалог reset()

По умолчанию значение true.

Функции доступа:

bool autoClose() const
void setAutoClose(bool close)

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

autoReset : bool

Это свойство определяет, вызывает ли диалоговое окно прогресса reset() как только value() станет равным maximum()

По умолчанию значение true.

Функции доступа:

bool autoReset() const
void setAutoReset(bool reset)

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

labelText : QString

Это свойство содержит текст метки.

По умолчанию текст пустой.

Функции доступа:

QString labelText() const
void setLabelText(const QString &text)

maximum : int

Это свойство содержит наибольшее значение, представленное полосой прогресса.

По умолчанию значение 100.

Функции доступа:

int maximum() const
void setMaximum(int maximum)

См. также minimum и setRange().

minimum : int

Это свойство содержит наименьшее значение, представленное полосой прогресса.

По умолчанию значение 0.

Функции доступа:

int minimum() const
void setMinimum(int minimum)

См. также maximum и setRange().

minimumDuration : int

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

Если ожидаемое время выполнения задачи меньше minimumDuration, диалог вообще не будет отображаться. Это предотвращает появление диалога для задач, которые быстро завершаются. Для задач, ожидаемое время выполнения которых превышает minimumDuration, диалог появится после minimumDuration или сразу же после установки прогресса.

Если задано значение 0, диалог всегда отображается сразу же после установки прогресса. По умолчанию 4000 миллисекунд.

Функции доступа:

int minimumDuration() const
void setMinimumDuration(int ms)

value : int

Это свойство содержит текущее количество выполненной работы.

Для корректной работы диалогового окна прогресса вы должны изначально установить это свойство в QProgressDialog::minimum() и в конечном итоге установить его в QProgressDialog::maximum(); вы можете вызвать setValue() любое количество раз между ними.

Предупреждение: Если диалоговое окно прогресса модальное (см. QProgressDialog::QProgressDialog()), вызовы setValue() вызывают QApplication::processEvents(), поэтому будьте внимательны, чтобы это не вызвало нежелательной рекурсии в вашем коде. Например, не используйте QProgressDialog внутри paintEvent()!

Функции доступа:

int value() const
void setValue(int progress)

См. также minimum и maximum.

wasCanceled : const bool

Это свойство содержит значение, указывающее, была ли отменена операция.

Функции доступа:

bool wasCanceled() const

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

QProgressDialog::QProgressDialog(QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())

Создаёт диалоговое окно прогресса.

Настройки по умолчанию:

  • Текст метки пустой.
  • Текст кнопки отмены (переведённый) «Отмена».
  • minimum — 0;
  • maximum — 100

Аргумент parent — родительский виджет диалога. Флаги виджета f передаются конструктору QDialog::QDialog().

См. также setLabelText(), setCancelButtonText(), setCancelButton(), setMinimum() и setMaximum().

QProgressDialog::QProgressDialog(const QString &labelText, const QString &cancelButtonText, int minimum, int maximum, QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())

Создаёт диалог выполнения.

labelText — текст, используемый для напоминания пользователю о выполняемой операции.

cancelButtonText — текст, отображаемый на кнопке отмены. Если передать QString(), кнопка отмены не отображается.

minimum и maximum — количество шагов в операции, для которых этот диалог отображает прогресс. Например, если операция заключается в проверке 50 файлов, значение minimum будет 0, а maximum — 50. Перед проверкой первого файла вызовите setValue(0). По завершении обработки каждого файла вызовите setValue(1), setValue(2) и так далее, а после проверки последнего файла — setValue(50).

Аргумент parent — родительский виджет диалога. Родительский виджет parent и флаги виджета f передаются конструктору QDialog::QDialog().

См. также setLabelText(), setLabel(), setCancelButtonText(), setCancelButton(), setMinimum() и setMaximum().

QProgressDialog::~QProgressDialog()

Уничтожает диалог выполнения.

[slot] void QProgressDialog::cancel()

Сбрасывает диалог выполнения. wasCanceled() становится true до тех пор, пока диалог выполнения не будет сброшен. Диалог выполнения скрывается.

[signal] void QProgressDialog::canceled()

Этот сигнал испускается при нажатии на кнопку отмены. По умолчанию он подсоединён к слоту cancel().

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

[virtual protected] void QProgressDialog::changeEvent(QEvent *ev)

Переопределено из QWidget::changeEvent().

[virtual protected] void QProgressDialog::closeEvent(QCloseEvent *e)

Переопределено из QWidget::closeEvent().

[protected slot] void QProgressDialog::forceShow()

Отображает диалог, если он по-прежнему скрыт после запуска алгоритма и прошло minimumDuration миллисекунд.

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

void QProgressDialog::open(QObject *receiver, const char *member)

Это перегруженный метод.

Открывает диалог и подключает его сигнал canceled() к слоту, указанному receiver и member.

Сигнал будет отключён от слота при закрытии диалога.

Функция была добавлена в Qt 4.5.

[slot] void QProgressDialog::reset()

Сбрасывает диалог выполнения. Диалог выполнения скрывается, если autoClose() имеет значение true.

См. также setAutoClose() и setAutoReset().

[virtual protected] void QProgressDialog::resizeEvent(QResizeEvent *event)

Переопределено из QWidget::resizeEvent().

void QProgressDialog::setBar(QProgressBar *bar)

Устанавливает виджет полосы прогресса на bar. Диалог выполнения изменяет размер, чтобы вместить его. Диалог выполнения принимает во владение полосу прогресса bar, которая будет удалена при необходимости, поэтому не используйте полосу прогресса, выделенную в стеке.

void QProgressDialog::setCancelButton(QPushButton *cancelButton)

Устанавливает кнопку отмены на кнопку cancelButton. Диалог выполнения принимает во владение эту кнопку, которая будет удалена при необходимости, поэтому не передавайте адрес объекта, находящегося в стеке (используйте new() для создания кнопки). Если передано значение 0, кнопка отмены не отображается.

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

[slot] void QProgressDialog::setCancelButtonText(const QString &cancelButtonText)

Устанавливает текст кнопки отмены на cancelButtonText. Если текст установлен на QString(), это приведет к скрытию и удалению кнопки отмены.

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

void QProgressDialog::setLabel(QLabel *label)

Устанавливает метку на label. Диалог выполнения изменяет размер, чтобы вместить её. Метка переходит во владение диалога выполнения и будет удалена при необходимости, поэтому не передавайте адрес объекта, находящегося в стеке.

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

[slot] void QProgressDialog::setRange(int minimum, int maximum)

Устанавливает минимальное и максимальное значения диалога выполнения на minimum и maximum соответственно.

Если maximum меньше minimum, то единственным допустимым значением становится minimum.

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

См. также minimum и maximum.

[virtual protected] void QProgressDialog::showEvent(QShowEvent *e)

Переопределено из QWidget::showEvent().

[virtual] QSize QProgressDialog::sizeHint() const

Переопределено из QWidget::sizeHint().

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

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

Spec-Zone.ru

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