QWizardPage Class
La clase QWizardPage es la clase base para las páginas de asistentes. Más...
| Cabecera: | #include <QWizardPage> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets)target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Hereda: | QWidget |
Propiedades
Funciones públicas
| QWizardPage(QWidget *parent = nullptr) | |
| virtual | ~QWizardPage() |
| QString | buttonText(QWizard::WizardButton which) const |
| virtual void | cleanupPage() |
| virtual void | initializePage() |
| bool | isCommitPage() const |
| virtual bool | isComplete() const |
| bool | isFinalPage() const |
| virtual int | nextId() const |
| QPixmap | pixmap(QWizard::WizardPixmap which) const |
| void | setButtonText(QWizard::WizardButton which, const QString &text) |
| void | setCommitPage(bool commitPage) |
| void | setFinalPage(bool finalPage) |
| void | setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap) |
| void | setSubTitle(const QString &subTitle) |
| void | setTitle(const QString &title) |
| QString | subTitle() const |
| QString | title() const |
| virtual bool | validatePage() |
Señales
| void | completeChanged() |
Funciones protegidas
| QVariant | field(const QString &name) const |
| void | registerField(const QString &name, QWidget *widget, const char *property = nullptr, const char *changedSignal = nullptr) |
| void | setField(const QString &name, const QVariant &value) |
| QWizard * | wizard() const |
Descripción detallada
QWizard representa un asistente. Cada página es una QWizardPage. Cuando cree sus propios asistentes, puede utilizar QWizardPage directamente, o puede subclasificarla para un mayor control.
Una página tiene los siguientes atributos, que son renderizados por QWizard: un title, un subTitle, y un set of pixmaps. Ver Elements of a Wizard Page para más detalles. Una vez añadida una página al asistente (mediante QWizard::addPage() o QWizard::setPage()), wizard() devuelve un puntero al objeto QWizard asociado.
Page proporciona cinco funciones virtuales que pueden ser reimplementadas para proporcionar un comportamiento personalizado:
- initializePage() es llamada para inicializar el contenido de la página cuando el usuario pulsa el botón Next del asistente. Si desea derivar el valor predeterminado de la página de lo que el usuario introdujo en páginas anteriores, esta es la función que debe reimplementar.
- cleanupPage() se ejecuta para restablecer el contenido de la página cuando el usuario hace clic en el botón Back del asistente.
- validatePage() valida la página cuando el usuario hace clic en Next o Finish. Suele utilizarse para mostrar un mensaje de error si el usuario ha introducido información incompleta o no válida.
- nextId() devuelve el ID de la página siguiente. Es útil cuando creating non-linear wizards, que permiten diferentes rutas de navegación en función de la información proporcionada por el usuario.
- isComplete() se llama para determinar si el botón Next y/o Finish deben estar activados o desactivados. Si reimplementas isComplete(), asegúrate también de que completeChanged() se emita cada vez que cambie el estado completo.
Normalmente, el botón Next y el botón Finish de un asistente son mutuamente excluyentes. Si isFinalPage() devuelve true, Finish está disponible; en caso contrario, Next está disponible. Por defecto, isFinalPage() es verdadero sólo cuando nextId() devuelve -1. Si desea mostrar Next y Final simultáneamente para una página (permitiendo al usuario realizar un "final anticipado"), llame a setFinalPage(true) en esa página. En el caso de los asistentes que admiten la finalización anticipada, es posible que también desee establecer las opciones HaveNextButtonOnLastPage y HaveFinishButtonOnEarlyPages en el asistente.
En muchos asistentes, el contenido de una página puede afectar a los valores por defecto de los campos de una página posterior. Para facilitar la comunicación entre páginas, QWizard soporta un "field" mechanism que permite registrar un campo (por ejemplo, un QLineEdit) en una página y acceder a su valor desde cualquier página. Los campos son globales a todo el asistente y facilitan que cualquier página pueda acceder a la información almacenada por otra página, sin tener que poner toda la lógica en QWizard o que las páginas se conozcan explícitamente entre sí. Los campos se registran utilizando registerField() y se puede acceder a ellos en cualquier momento utilizando field() y setField().
Ver también QWizard, Ejemplo de Asistente Trivial, y Ejemplo de Asistente de Licencias.
Documentación de propiedades
subTitle : QString
Esta propiedad contiene el subtítulo de la página
El subtítulo se muestra en QWizard, entre el título y la página real. Los subtítulos son opcionales. En ClassicStyle y ModernStyle, el uso de subtítulos es necesario para que aparezca el encabezado. En MacStyle, el subtítulo se muestra como una etiqueta de texto justo encima de la página real.
El subtítulo puede ser texto plano o HTML, dependiendo del valor de la propiedad QWizard::subTitleFormat.
Por defecto, esta propiedad contiene una cadena vacía.
Funciones de acceso:
| QString | subTitle() const |
| void | setSubTitle(const QString &subTitle) |
Véase también title, QWizard::IgnoreSubTitles, y Elements of a Wizard Page.
title : QString
Esta propiedad contiene el título de la página
El título se muestra en QWizard, encima de la página. Todas las páginas deben tener un título.
El título puede ser texto plano o HTML, dependiendo del valor de la propiedad QWizard::titleFormat.
Por defecto, esta propiedad contiene una cadena vacía.
Funciones de acceso:
| QString | title() const |
| void | setTitle(const QString &title) |
Véase también subTitle y Elements of a Wizard Page.
Documentación de las funciones miembro
[explicit] QWizardPage::QWizardPage(QWidget *parent = nullptr)
Construye una página de asistente con la dirección parent.
Cuando la página se inserta en un asistente utilizando QWizard::addPage() o QWizard::setPage(), el padre se establece automáticamente como el asistente.
Véase también wizard().
[virtual noexcept] QWizardPage::~QWizardPage()
Destructor.
QString QWizardPage::buttonText(QWizard::WizardButton which) const
Devuelve el texto del botón which en esta página.
Si se ha establecido un texto con setButtonText(), se devuelve este texto. En caso contrario, si se ha establecido un texto con QWizard::setButtonText(), se devuelve este texto.
Por defecto, el texto de los botones depende de QWizard::wizardStyle. Por ejemplo, en macOS, el botón Next se llama Continue.
Véase también setButtonText(), QWizard::buttonText() y QWizard::setButtonText().
[virtual] void QWizardPage::cleanupPage()
Esta función virtual es llamada por QWizard::cleanupPage() cuando el usuario abandona la página haciendo clic en Back (a menos que la opción QWizard::IndependentPages esté activada).
La implementación por defecto restablece los campos de la página a sus valores originales (los valores que tenían antes de llamar a initializePage()).
Véase también QWizard::cleanupPage(), initializePage(), y QWizard::IndependentPages.
[signal] void QWizardPage::completeChanged()
Esta señal se emite cada vez que cambia el estado completo de la página (es decir, el valor de isComplete()).
Si reimplementa isComplete(), asegúrese de emitir completeChanged() siempre que cambie el valor de isComplete(), para garantizar que QWizard actualiza el estado activado o desactivado de sus botones.
Véase también isComplete().
[protected] QVariant QWizardPage::field(const QString &name) const
Devuelve el valor del campo llamado name.
Esta función puede utilizarse para acceder a campos de cualquier página del asistente. Es equivalente a llamar a wizard()->field(name).
Ejemplo:
const QString emailAddress = field("details.email").toString(); licenseText = tr("<u>First-Time License Agreement:</u> " "You can use this software subject to the license " "you will receive by email sent to %1.").arg(emailAddress);
Véase también QWizard::field(), setField() y registerField().
[virtual] void QWizardPage::initializePage()
Esta función virtual es llamada por QWizard::initializePage() para preparar la página justo antes de que se muestre, ya sea como resultado de la llamada a QWizard::restart(), o como resultado de que el usuario haga clic en Next. (Sin embargo, si se establece la opción QWizard::IndependentPages, esta función sólo se llama la primera vez que se muestra la página).
Al reimplementar esta función, puede asegurarse de que los campos de la página se inicializan correctamente basándose en los campos de páginas anteriores. Por ejemplo:
void ConclusionPage::initializePage() { QString licenseText; if (wizard()->hasVisitedPage(LicenseWizard::Page_Evaluate)) { licenseText = tr("<u>Evaluation License Agreement:</u> " "You can use this software for 30 days and make one " "backup, but you are not allowed to distribute it."); } else if (wizard()->hasVisitedPage(LicenseWizard::Page_Details)) { const QString emailAddress = field("details.email").toString(); licenseText = tr("<u>First-Time License Agreement:</u> " "You can use this software subject to the license " "you will receive by email sent to %1.").arg(emailAddress); } else { licenseText = tr("<u>Upgrade License Agreement:</u> " "This software is licensed under the terms of your " "current license."); } bottomLabel->setText(licenseText); }
La implementación por defecto no hace nada.
Véase también QWizard::initializePage(), cleanupPage(), y QWizard::IndependentPages.
bool QWizardPage::isCommitPage() const
Devuelve true si esta página es una página de confirmación; en caso contrario, devuelve false.
Véase también setCommitPage().
[virtual] bool QWizardPage::isComplete() const
Esta función virtual es llamada por QWizard para determinar si el botón Next o Finish debe ser activado o desactivado.
La implementación por defecto devuelve true si todos los mandatory fields están llenos; en caso contrario, devuelve false.
Si reimplementa esta función, asegúrese de emitir completeChanged(), desde el resto de su implementación, siempre que cambie el valor de isComplete(). Esto asegura que QWizard actualiza el estado activado o desactivado de sus botones. Un ejemplo de reimplementación está disponible aquí.
Véase también completeChanged() y isFinalPage().
bool QWizardPage::isFinalPage() const
Esta función es llamada por QWizard para determinar si el botón Finish debe mostrarse para esta página o no.
Por defecto, devuelve true si no hay página siguiente (es decir, nextId() devuelve -1); en caso contrario, devuelve false.
Llamando explícitamente a setFinalPage(true), puede permitir al usuario realizar una "finalización anticipada".
Véase también isComplete() y QWizard::HaveFinishButtonOnEarlyPages.
[virtual] int QWizardPage::nextId() const
Esta función virtual es llamada por QWizard::nextId() para averiguar qué página mostrar cuando el usuario pulsa el botón Next.
El valor devuelto es el ID de la página siguiente, o -1 si no hay página siguiente.
Por defecto, esta función devuelve el ID más bajo que el ID de la página actual, o -1 si no existe tal ID.
Al reimplementar esta función, puede especificar un orden de página dinámico. Por ejemplo:
int IntroPage::nextId() const { if (evaluateRadioButton->isChecked()) { return LicenseWizard::Page_Evaluate; } else { return LicenseWizard::Page_Register; } }
Véase también QWizard::nextId().
QPixmap QWizardPage::pixmap(QWizard::WizardPixmap which) const
Devuelve el pixmap establecido para el rol which.
Los mapas de píxeles también pueden establecerse para todo el asistente utilizando QWizard::setPixmap(), en cuyo caso se aplican a todas las páginas que no especifiquen un mapa de píxeles.
Véase también setPixmap(), QWizard::pixmap(), y Elements of a Wizard Page.
[protected] void QWizardPage::registerField(const QString &name, QWidget *widget, const char *property = nullptr, const char *changedSignal = nullptr)
Crea un campo llamado name asociado a la propiedad property de la propiedad widget. A partir de ese momento, esa propiedad será accesible mediante field() y setField().
Los campos son globales a todo el asistente y facilitan que cualquier página pueda acceder a la información almacenada por otra página, sin tener que poner toda la lógica en QWizard o que las páginas se conozcan explícitamente entre sí.
Si name termina con un asterisco (*), el campo es obligatorio. Cuando una página tiene campos obligatorios, los botones Next y/o Finish sólo se activan cuando se rellenan todos los campos obligatorios. Esto requiere que se especifique changedSignal, para indicar a QWizard que vuelva a comprobar el valor almacenado por el campo obligatorio.
QWizard conoce los widgets Qt más comunes. Para estos (o sus subclases), no es necesario especificar un property o un changedSignal. La siguiente tabla enumera estos widgets:
| Widget | Propiedad | Señal de notificación de cambio |
|---|---|---|
| QAbstractButton | bool checked | toggled() |
| QAbstractSlider | int value | valueChanged() |
| QComboBox | int currentIndex | currentIndexChanged() |
| QDateTimeEdit | QDateTime dateTime | dateTimeChanged() |
| QLineEdit | QString text | textChanged() |
| QListWidget | int currentRow | currentRowChanged() |
| QSpinBox | int value | valueChanged() |
Puede utilizar QWizard::setDefaultProperty() para añadir entradas a esta tabla o para anular entradas existentes.
Para considerar que un campo está "lleno", QWizard simplemente comprueba que su valor actual no es igual a su valor original (el valor que tenía antes de llamar a initializePage()). Para QLineEdit, también comprueba que hasAcceptableInput() devuelva verdadero, para respetar cualquier validador o máscara.
QWizardEl mecanismo de campos obligatorios de se proporciona por comodidad. Puede evitarse reimplementando QWizardPage::isComplete().
Véase también field(), setField() y QWizard::setDefaultProperty().
void QWizardPage::setButtonText(QWizard::WizardButton which, const QString &text)
Establece el texto del botón which para que sea text en esta página.
Por defecto, el texto de los botones depende de QWizard::wizardStyle, pero puede redefinirse para el asistente en su conjunto utilizando QWizard::setButtonText().
Véase también buttonText(), QWizard::setButtonText(), y QWizard::buttonText().
void QWizardPage::setCommitPage(bool commitPage)
Convierte esta página en una página de confirmación si commitPage es verdadero; de lo contrario, la convierte en una página normal.
Una página de confirmación es una página que representa una acción que no puede deshacerse haciendo clic en Back o Cancel.
El botón Commit sustituye al botón Next en una página de confirmación. Al hacer clic en este botón, simplemente se llama a QWizard::next(), igual que al hacer clic en Next.
Una página a la que se accede directamente desde una página de confirmación tiene el botón Back desactivado.
Véase también isCommitPage().
[protected] void QWizardPage::setField(const QString &name, const QVariant &value)
Establece el valor del campo llamado name en value.
Esta función puede utilizarse para establecer campos en cualquier página del asistente. Es equivalente a llamar a wizard()->setField(name, value).
Véase también QWizard::setField(), field() y registerField().
void QWizardPage::setFinalPage(bool finalPage)
Establece explícitamente esta página como final si finalPage es verdadero.
Después de llamar a setFinalPage(true), isFinalPage() devuelve true y el botón Finish está visible (y activado si isComplete() devuelve true).
Después de llamar a setFinalPage(false), isFinalPage() devuelve true si nextId() devuelve -1; en caso contrario, devuelve false.
Véase también isFinalPage(), isComplete() y QWizard::HaveFinishButtonOnEarlyPages.
void QWizardPage::setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap)
Establece el mapa de píxeles del rol which en pixmap.
Los pixmaps son utilizados por QWizard cuando se muestra una página. Los mapas de píxeles que se utilicen dependerán de wizard style.
Los mapas de píxeles también pueden establecerse para todo el asistente utilizando QWizard::setPixmap(), en cuyo caso se aplicarán a todas las páginas que no especifiquen un mapa de píxeles.
Véase también pixmap(), QWizard::setPixmap(), y Elements of a Wizard Page.
[virtual] bool QWizardPage::validatePage()
Esta función virtual es llamada por QWizard::validateCurrentPage() cuando el usuario pulsa Next o Finish para realizar alguna validación de última hora. Si devuelve true, se muestra la página siguiente (o finaliza el asistente); en caso contrario, se mantiene la página actual.
La implementación por defecto devuelve true.
Cuando sea posible, suele ser mejor estilo desactivar el botón Next o Finish (especificando mandatory fields o reimplementando isComplete()) que reimplementar validatePage().
Véase también QWizard::validateCurrentPage() y isComplete().
[protected] QWizard *QWizardPage::wizard() const
Devuelve el asistente asociado a esta página, o nullptr si esta página aún no se ha insertado en un QWizard.
Véase también QWizard::addPage() y QWizard::setPage().
© 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.