QProgressDialog Class
La clase QProgressDialog proporciona información sobre el progreso de una operación lenta. Más...
| Cabecera: | #include <QProgressDialog> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets)target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Hereda: | QDialog |
- Lista de todos los miembros, incluyendo los heredados
- QProgressDialog es parte de Standard Dialogs.
Propiedades
|
Funciones públicas
| QProgressDialog(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()) | |
| QProgressDialog(const QString &labelText, const QString &cancelButtonText, int minimum, int maximum, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()) | |
| virtual | ~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 |
Funciones públicas reimplementadas
| virtual QSize | sizeHint() const override |
Ranuras públicas
| 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) |
Señales
| void | canceled() |
Funciones protegidas reimplementadas
| virtual void | changeEvent(QEvent *ev) override |
| virtual void | closeEvent(QCloseEvent *e) override |
| virtual void | resizeEvent(QResizeEvent *event) override |
| virtual void | showEvent(QShowEvent *e) override |
Ranuras protegidas
| void | forceShow() |
Descripción detallada
Un diálogo de progreso se utiliza para dar al usuario una indicación de cuánto tiempo va a tardar una operación, y para demostrar que la aplicación no se ha congelado. También puede dar al usuario la oportunidad de abortar la operación.
Un problema común con los diálogos de progreso es que es difícil saber cuándo usarlos; las operaciones toman diferentes cantidades de tiempo en diferentes hardware. QProgressDialog ofrece una solución a este problema: estima el tiempo que tardará la operación (basándose en el tiempo por pasos), y sólo se muestra si esa estimación es superior a minimumDuration() (4 segundos por defecto).
Utilice setMinimum() y setMaximum() o el constructor para establecer el número de "pasos" de la operación y llame a setValue() a medida que avanza la operación. El número de pasos puede elegirse arbitrariamente. Puede ser el número de archivos copiados, el número de bytes recibidos, el número de iteraciones a través del bucle principal de su algoritmo, o alguna otra unidad adecuada. El progreso comienza en el valor establecido por setMinimum(), y el diálogo de progreso muestra que la operación ha terminado cuando se llama a setValue() con el valor establecido por setMaximum() como argumento.
El diálogo se restablece automáticamente y se oculta al final de la operación. Utilice setAutoReset() y setAutoClose() para cambiar este comportamiento. Tenga en cuenta que si establece un nuevo máximo (usando setMaximum() o setRange()) que sea igual al actual value(), el diálogo no se cerrará a pesar de ello.
Hay dos formas de usar QProgressDialog: modal y sin modelo.
Comparado con un QProgressDialog sin modelo, un QProgressDialog modal es más simple de usar para el programador. Realiza la operación en un bucle, llama a setValue() a intervalos, y comprueba la cancelación con wasCanceled(). Por ejemplo:
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);
Un diálogo de progreso sin modelo es adecuado para operaciones que tienen lugar en segundo plano, donde el usuario puede interactuar con la aplicación. Tales operaciones se basan típicamente en una clase de temporizador, como QChronoTimer (o la de más bajo nivel QObject::timerEvent()) o QSocketNotifier; o se realizan en un hilo separado. Un QProgressBar en la barra de estado de su ventana principal es a menudo una alternativa a un diálogo de progreso sin modelo.
Necesita tener un bucle de eventos en ejecución, conectar la señal canceled() a una ranura que detenga la operación, y llamar a setValue() a intervalos. Por ejemplo:
// Operation constructor Operation::Operation(QObject *parent) : QObject(parent), steps(0) { pd = new QProgressDialog("Operation in progress.", "Cancel", 0, 100); connect(pd, &QProgressDialog::canceled, this, &Operation::cancel); t = new QTimer(this); connect(t, &QTimer::timeout, this, &Operation::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 }
En ambos modos, el diálogo de progreso puede personalizarse sustituyendo los widgets hijos por widgets personalizados mediante setLabel(), setBar() y setCancelButton(). Las funciones setLabelText() y setCancelButtonText() establecen los textos mostrados.

Véase también QDialog y QProgressBar.
Documentación de propiedades
autoClose : bool
Esta propiedad indica si el diálogo se oculta mediante reset()
Por defecto es true.
Funciones de acceso:
| bool | autoClose() const |
| void | setAutoClose(bool close) |
Véase también setAutoReset().
autoReset : bool
Esta propiedad mantiene si el diálogo de progreso llama a reset() tan pronto como value() es igual a maximum().
Por defecto es true.
Funciones de acceso:
| bool | autoReset() const |
| void | setAutoReset(bool reset) |
Véase también setAutoClose().
labelText : QString
Esta propiedad contiene el texto de la etiqueta
El texto por defecto es una cadena vacía.
Funciones de acceso:
| QString | labelText() const |
| void | setLabelText(const QString &text) |
maximum : int
Esta propiedad contiene el valor más alto representado por la barra de progreso
El valor por defecto es 100.
Funciones de acceso:
| int | maximum() const |
| void | setMaximum(int maximum) |
Véase también minimum y setRange().
minimum : int
Esta propiedad contiene el valor más bajo representado por la barra de progreso
El valor por defecto es 0.
Funciones de acceso:
| int | minimum() const |
| void | setMinimum(int minimum) |
Véase también maximum y setRange().
minimumDuration : int
Esta propiedad contiene el tiempo que debe transcurrir antes de que aparezca el diálogo
Si la duración prevista de la tarea es inferior a la duración mínima, el cuadro de diálogo no aparecerá. Esto evita que el diálogo aparezca para tareas que se acaban rápidamente. Para las tareas que se espera que superen la duración mínima, el cuadro de diálogo aparecerá después del tiempo de duración mínima o tan pronto como se establezca algún progreso.
Si se establece en 0, el diálogo siempre se muestra tan pronto como se establece cualquier progreso. El valor por defecto es 4000 milisegundos.
Funciones de acceso:
| int | minimumDuration() const |
| void | setMinimumDuration(int ms) |
value : int
Esta propiedad contiene la cantidad actual de progreso realizado.
Para que el diálogo de progreso funcione como se espera, debe establecer inicialmente esta propiedad a QProgressDialog::minimum() y finalmente establecerla a QProgressDialog::maximum(); puede llamar a setValue() cualquier número de veces entre medias.
Advertencia: Si el diálogo de progreso es modal (ver QProgressDialog::QProgressDialog()), setValue() llama a QCoreApplication::processEvents(), así que tenga cuidado de que esto no cause una reentrada no deseada en su código. Por ejemplo, ¡no uses un QProgressDialog dentro de un paintEvent()!
Funciones de acceso:
| int | value() const |
| void | setValue(int progress) |
Véase también minimum y maximum.
[read-only] wasCanceled : bool
Esta propiedad indica si el diálogo ha sido cancelado
Funciones de acceso:
| bool | wasCanceled() const |
Documentación de funciones miembro
[explicit] QProgressDialog::QProgressDialog(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
Construye un diálogo de progreso.
Configuración por defecto:
- El texto de la etiqueta está vacío.
- El texto del botón de cancelación es (traducido) "Cancelar".
- El mínimo es 0;
- máximo es 100
El argumento parent es el widget padre del diálogo. Las banderas del widget, f, se pasan al constructor QDialog::QDialog().
Véase también setLabelText(), setCancelButtonText(), setCancelButton(), setMinimum(), y setMaximum().
QProgressDialog::QProgressDialog(const QString &labelText, const QString &cancelButtonText, int minimum, int maximum, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
Construye un diálogo de progreso.
El labelText es el texto utilizado para recordar al usuario lo que está progresando.
El cancelButtonText es el texto a mostrar en el botón de cancelar. Si se pasa QString() no se muestra ningún botón de cancelación.
minimum y maximum es el número de pasos de la operación para los que este diálogo de progreso muestra el progreso. Por ejemplo, si la operación es examinar 50 ficheros, este valor mínimo sería 0, y el máximo sería 50. Antes de examinar el primer fichero, llame a setValue(0). A medida que se procesa cada fichero se llama a setValue(1), setValue(2), etc., llamando finalmente a setValue(50) después de examinar el último fichero.
El argumento parent es el widget padre del diálogo. El padre, parent, y las banderas del widget, f, se pasan al constructor QDialog::QDialog().
Véase también setLabelText(), setLabel(), setCancelButtonText(), setCancelButton(), setMinimum(), y setMaximum().
[virtual noexcept] QProgressDialog::~QProgressDialog()
Destruye el diálogo de progreso.
[slot] void QProgressDialog::cancel()
Reinicia el diálogo de progreso. wasCanceled() se convierte en verdadero hasta que se reinicia el diálogo de progreso. El diálogo de progreso se oculta.
[signal] void QProgressDialog::canceled()
Esta señal se emite cuando se pulsa el botón de cancelación. Está conectada por defecto a la ranura cancel().
Véase también wasCanceled().
[override virtual protected] void QProgressDialog::changeEvent(QEvent *ev)
Reimplementa: QWidget::changeEvent(QEvent *event).
[override virtual protected] void QProgressDialog::closeEvent(QCloseEvent *e)
Reimplementa: QDialog::closeEvent(QCloseEvent *e).
[protected slot] void QProgressDialog::forceShow()
Muestra el diálogo si sigue oculto después de que se haya iniciado el algoritmo y hayan transcurrido minimumDuration milisegundos.
Véase también setMinimumDuration().
void QProgressDialog::open(QObject *receiver, const char *member)
Abre el diálogo y conecta su señal canceled() a la ranura especificada por receiver y member.
La señal se desconectará de la ranura cuando se cierre el diálogo.
[slot] void QProgressDialog::reset()
Restablece el diálogo de progreso. El diálogo de progreso se oculta si autoClose() es verdadero.
Véase también setAutoClose() y setAutoReset().
[override virtual protected] void QProgressDialog::resizeEvent(QResizeEvent *event)
Reimplementa: QDialog::resizeEvent(QResizeEvent *).
void QProgressDialog::setBar(QProgressBar *bar)
Establece el widget de la barra de progreso en bar. El diálogo de progreso se redimensiona para ajustarse. El diálogo de progreso se apropia del progreso bar que se borrará cuando sea necesario, así que no utilices una barra de progreso asignada en la pila.
void QProgressDialog::setCancelButton(QPushButton *cancelButton)
Establece el botón de cancelación en el botón pulsador, cancelButton. El diálogo de progreso toma posesión de este botón que será borrado cuando sea necesario, así que no pases la dirección de un objeto que esté en la pila, es decir, usa new() para crear el botón. Si se pasa nullptr, no se mostrará ningún botón de cancelación.
Véase también setCancelButtonText().
[slot] void QProgressDialog::setCancelButtonText(const QString &cancelButtonText)
Establece el texto del botón de cancelación a cancelButtonText. Si el texto es establecido a QString() entonces causará que el botón de cancelación sea ocultado y borrado.
Véase también setCancelButton().
void QProgressDialog::setLabel(QLabel *label)
Establece la etiqueta en label. El diálogo de progreso se redimensiona para ajustarse. La etiqueta pasa a ser propiedad del diálogo de progreso y se borrará cuando sea necesario, así que no pases la dirección de un objeto en la pila.
Véase también setLabelText().
[slot] void QProgressDialog::setRange(int minimum, int maximum)
Establece los valores mínimo y máximo del diálogo de progreso en minimum y maximum, respectivamente.
Si maximum es menor que minimum, minimum se convierte en el único valor legal.
Si el valor actual queda fuera del nuevo rango, el diálogo de progreso se reinicia con reset().
Véase también minimum y maximum.
[override virtual protected] void QProgressDialog::showEvent(QShowEvent *e)
Reimplementa: QDialog::showEvent(QShowEvent *event).
[override virtual] QSize QProgressDialog::sizeHint() const
Reimplementa: QDialog::sizeHint() const.
Devuelve un tamaño que se ajusta al contenido del diálogo de progreso. El diálogo de progreso se redimensiona a sí mismo según sea necesario, por lo que no debería ser necesario llamar a esta función.
© 2026 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.