QWizard Class
La clase QWizard proporciona un marco para los asistentes. Más...
| Cabecera: | #include <QWizard> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets)target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Hereda: | QDialog |
Tipos públicos
| enum | WizardButton { BackButton, NextButton, CommitButton, FinishButton, CancelButton, …, Stretch } |
| enum | WizardOption { IndependentPages, IgnoreSubTitles, ExtendedWatermarkPixmap, NoDefaultButton, NoBackButtonOnStartPage, …, StretchBanner } |
| flags | WizardOptions |
| enum | WizardPixmap { WatermarkPixmap, LogoPixmap, BannerPixmap, BackgroundPixmap } |
| enum | WizardStyle { ClassicStyle, ModernStyle, MacStyle, AeroStyle } |
Propiedades
|
Funciones públicas
| QWizard(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | |
| virtual | ~QWizard() |
| int | addPage(QWizardPage *page) |
| QAbstractButton * | button(QWizard::WizardButton which) const |
| QString | buttonText(QWizard::WizardButton which) const |
| int | currentId() const |
| QWizardPage * | currentPage() const |
| QVariant | field(const QString &name) const |
| bool | hasVisitedPage(int id) const |
| virtual int | nextId() const |
| QWizard::WizardOptions | options() const |
| QWizardPage * | page(int id) const |
| QList<int> | pageIds() const |
| QPixmap | pixmap(QWizard::WizardPixmap which) const |
| void | removePage(int id) |
| void | setButton(QWizard::WizardButton which, QAbstractButton *button) |
| void | setButtonLayout(const QList<QWizard::WizardButton> &layout) |
| void | setButtonText(QWizard::WizardButton which, const QString &text) |
| void | setDefaultProperty(const char *className, const char *property, const char *changedSignal) |
| void | setField(const QString &name, const QVariant &value) |
| void | setOption(QWizard::WizardOption option, bool on = true) |
| void | setOptions(QWizard::WizardOptions options) |
| void | setPage(int id, QWizardPage *page) |
| void | setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap) |
| void | setSideWidget(QWidget *widget) |
| void | setStartId(int id) |
| void | setSubTitleFormat(Qt::TextFormat format) |
| void | setTitleFormat(Qt::TextFormat format) |
| void | setWizardStyle(QWizard::WizardStyle style) |
| QWidget * | sideWidget() const |
| int | startId() const |
| Qt::TextFormat | subTitleFormat() const |
| bool | testOption(QWizard::WizardOption option) const |
| Qt::TextFormat | titleFormat() const |
| virtual bool | validateCurrentPage() |
| QList<int> | visitedIds() const |
| QWizard::WizardStyle | wizardStyle() const |
Funciones públicas reimplementadas
| virtual void | setVisible(bool visible) override |
| virtual QSize | sizeHint() const override |
Ranuras públicas
| void | back() |
| void | next() |
| void | restart() |
| void | setCurrentId(int id) |
Señales
| void | currentIdChanged(int id) |
| void | customButtonClicked(int which) |
| void | helpRequested() |
| void | pageAdded(int id) |
| void | pageRemoved(int id) |
Funciones protegidas
| virtual void | cleanupPage(int id) |
| virtual void | initializePage(int id) |
Funciones protegidas reimplementadas
| virtual void | done(int result) override |
| virtual bool | event(QEvent *event) override |
| virtual bool | nativeEvent(const QByteArray &eventType, void *message, qintptr *result) override |
| virtual void | paintEvent(QPaintEvent *event) override |
| virtual void | resizeEvent(QResizeEvent *event) override |
Descripción detallada
Un asistente (también llamado asistente en macOS) es un tipo especial de diálogo de entrada que consiste en una secuencia de páginas. El propósito de un asistente es guiar al usuario a través de un proceso paso a paso. Los asistentes son útiles para tareas complejas o poco frecuentes que los usuarios pueden encontrar difíciles de aprender.
QWizard hereda QDialog y representa un asistente. Cada página es un QWizardPage (una subclase de QWidget ). Para crear tus propios asistentes, puedes usar estas clases directamente, o puedes subclasificarlas para tener más control.
Un ejemplo trivial
El siguiente ejemplo ilustra cómo crear páginas de asistente y añadirlas a un asistente. Para ejemplos más avanzados, consulte el Asistente de licencias.
QWizardPage *createIntroPage() { QWizardPage *page = new QWizardPage; page->setTitle("Introduction"); QLabel *label = new QLabel("This wizard will help you register your copy " "of Super Product Two."); label->setWordWrap(true); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(label); page->setLayout(layout); return page; } QWizardPage *createRegistrationPage() { ... } QWizardPage *createConclusionPage() { ... } int main(int argc, char *argv[]) { QApplication app(argc, argv); #ifndef QT_NO_TRANSLATION QString translatorFileName = QLatin1String("qtbase_"); translatorFileName += QLocale::system().name(); QTranslator *translator = new QTranslator(&app); if (translator->load(translatorFileName, QLibraryInfo::path(QLibraryInfo::TranslationsPath))) app.installTranslator(translator); #endif QWizard wizard; wizard.addPage(createIntroPage()); wizard.addPage(createRegistrationPage()); wizard.addPage(createConclusionPage()); wizard.setWindowTitle("Trivial Wizard"); wizard.show(); return app.exec(); }
Asistente
QWizard soporta cuatro estilos de asistente:
Puede establecer explícitamente el aspecto a utilizar utilizando setWizardStyle() (por ejemplo, si desea el mismo aspecto en todas las plataformas).
Nota: AeroStyle sólo tiene efecto en un sistema Windows Vista con la composición alfa activada. ModernStyle se utiliza como alternativa cuando no se cumple esta condición.
Además del estilo del asistente, hay varias opciones que controlan el aspecto del asistente. Éstas se pueden configurar utilizando setOption() o setOptions(). Por ejemplo, HaveHelpButton hace que QWizard muestre un botón Help junto con los otros botones del asistente.
Incluso puede cambiar el orden de los botones del asistente a cualquier orden arbitrario utilizando setButtonLayout(), y puede añadir hasta tres botones personalizados (por ejemplo, un botón Print ) a la fila de botones. Esto se consigue llamando a setButton() o setButtonText() con CustomButton1, CustomButton2, o CustomButton3 para configurar el botón, y activando las opciones HaveCustomButton1, HaveCustomButton2, o HaveCustomButton3. Cada vez que el usuario hace clic en un botón personalizado, se emite customButtonClicked(). Por ejemplo:
wizard()->setButtonText(QWizard::CustomButton1, tr("&Print")); wizard()->setOption(QWizard::HaveCustomButton1, true); connect(wizard(), &QWizard::customButtonClicked, this, &ConclusionPage::printButtonClicked);
Elementos de una página de asistente
Los Asistentes consisten en una secuencia de QWizardPages. En cualquier momento, sólo se muestra una página. Una página tiene los siguientes atributos:
- A title.
- UN subTitle.
- Un conjunto de pixmaps, que pueden o no ser honrados, dependiendo del estilo del asistente:
- WatermarkPixmap (utilizado por ClassicStyle y ModernStyle)
- BannerPixmap (utilizado por ModernStyle)
- LogoPixmap (utilizado por ClassicStyle y ModernStyle)
- BackgroundPixmap (utilizado por MacStyle)
El siguiente diagrama muestra cómo QWizard representa estos atributos, suponiendo que todos están presentes y se utiliza ModernStyle:

Cuando se establece un subTitle, QWizard lo muestra en un encabezado, en cuyo caso también utiliza el BannerPixmap y el LogoPixmap para decorar el encabezado. El WatermarkPixmap se muestra en el lado izquierdo, debajo del encabezado. En la parte inferior, hay una fila de botones que permiten al usuario navegar por las páginas.
La página en sí (el widget QWizardPage ) ocupa el área entre la cabecera, la marca de agua y la fila de botones. Normalmente, la página es un QWizardPage en el que se instala un QGridLayout, con widgets hijos estándar (QLabels, QLineEdits, etc.).
Si el estilo del asistente es MacStyle, la página tiene un aspecto radicalmente distinto:

Los pixmaps de marca de agua, banner y logotipo son ignorados por el MacStyle. Si el BackgroundPixmap está configurado, se utiliza como fondo para el asistente; de lo contrario, se utiliza una imagen "asistente" por defecto.
El título y el subtítulo se establecen llamando a QWizardPage::setTitle() y QWizardPage::setSubTitle() en las páginas individuales. Pueden ser texto plano o HTML (véase titleFormat y subTitleFormat). Los mapas de píxeles pueden establecerse globalmente para todo el asistente utilizando setPixmap(), o por página utilizando QWizardPage::setPixmap().
Registro y uso de campos
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 mecanismo de "campo" que permite registrar un campo (por ejemplo, QLineEdit) en una página y acceder a su valor desde cualquier página. También es posible especificar campos obligatorios (es decir, campos que deben rellenarse antes de que el usuario pueda avanzar a la página siguiente).
Para registrar un campo, llame a QWizardPage::registerField() campo. Por ejemplo:
registerField("evaluate.name*", nameLineEdit); registerField("evaluate.email*", emailLineEdit);
El código anterior registra tres campos, className, baseClass, y qobjectMacro, que están asociados a tres widgets hijos. El asterisco (*) junto a className denota un campo obligatorio.
Los campos de cualquier página son accesibles desde cualquier otra página. 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); }
Aquí, llamamos a QWizardPage::field() para acceder al contenido del campo details.email (que se definió en DetailsPage) y lo utilizamos para inicializar ConclusionPage. El contenido del campo se devuelve como QVariant.
Cuando creamos un campo utilizando QWizardPage::registerField(), pasamos un nombre de campo único y un widget. También podemos proporcionar un nombre de propiedad Qt y una señal "changed" (una señal que se emite cuando la propiedad cambia) como tercer y cuarto argumento; sin embargo, esto no es necesario para los widgets Qt más comunes, como QLineEdit, QCheckBox, y QComboBox, porque QWizard sabe qué propiedades buscar.
Si se añade un asterisco (*) al nombre cuando se registra la propiedad, el campo es obligatorio. Cuando una página tiene campos obligatorios, los botones Next y/o Finish se activan sólo cuando se rellenan todos los campos obligatorios.
Para considerar que un campo está "lleno", QWizard simplemente comprueba que el valor actual del campo no es igual al valor original (el valor que tenía cuando se llamó a initializePage()). Para las subclases QLineEdit y QAbstractSpinBox, QWizard también comprueba que hasAcceptableInput() devuelva true, para respetar cualquier validador o máscara.
El mecanismo de campos obligatorios de QWizard se proporciona por comodidad. Una alternativa más potente (pero también más engorrosa) es reimplementar QWizardPage::isComplete() y emitir la señal QWizardPage::completeChanged() cada vez que la página esté completa o incompleta.
El estado activado/desactivado de los botones Next y/o Finish es una forma de realizar la validación de la entrada del usuario. Otra forma es reimplementar validateCurrentPage() (o QWizardPage::validatePage()) para realizar alguna validación de última hora (y mostrar un mensaje de error si el usuario ha introducido información incompleta o no válida). Si la función devuelve true, se muestra la página siguiente (o finaliza el asistente); en caso contrario, se mantiene la página actual.
Creación de Asistentes Lineales
La mayoría de los asistentes tienen una estructura lineal, con la página 1 seguida por la página 2 y así sucesivamente hasta la última página. El ejemplo del Asistente Trivial es un asistente de este tipo. Con QWizard, los asistentes lineales se crean instanciando QWizardPages e insertándolos usando addPage(). Por defecto, las páginas se muestran en el orden en que fueron añadidas. Por ejemplo:
QWizard wizard; wizard.addPage(createIntroPage()); wizard.addPage(createRegistrationPage()); wizard.addPage(createConclusionPage());
Cuando una página está a punto de mostrarse, QWizard llama a initializePage() (que a su vez llama a QWizardPage::initializePage()) para rellenar la página con valores por defecto. Por defecto, esta función no hace nada, pero puede ser reimplementada para inicializar el contenido de la página basándose en los campos de otras páginas (ver example above).
Si el usuario pulsa Back, se llama a cleanupPage() (que a su vez llama a QWizardPage::cleanupPage()). La implementación por defecto restablece los campos de la página a sus valores originales (los valores que tenían antes de que se llamara a initializePage()). Si desea que el botón Back no sea destructivo y mantenga los valores introducidos por el usuario, simplemente active la opción IndependentPages.
Creación de asistentes no lineales
Algunos asistentes son más complejos en el sentido de que permiten diferentes rutas de navegación basadas en la información proporcionada por el usuario. El ejemplo del Asistente de Licencia ilustra esto. Proporciona varias páginas de asistente; dependiendo de las opciones seleccionadas, el usuario puede llegar a diferentes páginas.

En los asistentes complejos, las páginas se identifican mediante IDs. Estos IDs se definen típicamente usando un enum. Por ejemplo:
class LicenseWizard : public QWizard { ... enum { Page_Intro, Page_Evaluate, Page_Register, Page_Details, Page_Conclusion }; ... };
Las páginas se insertan utilizando setPage(), que toma un ID y una instancia de QWizardPage (o de una subclase):
LicenseWizard::LicenseWizard(QWidget *parent) : QWizard(parent) { setPage(Page_Intro, new IntroPage); setPage(Page_Evaluate, new EvaluatePage); setPage(Page_Register, new RegisterPage); setPage(Page_Details, new DetailsPage); setPage(Page_Conclusion, new ConclusionPage); ... }
Por defecto, las páginas se muestran en orden creciente de ID. Para proporcionar un orden dinámico que dependa de las opciones elegidas por el usuario, debemos reimplementar QWizardPage::nextId(). Por ejemplo:
int IntroPage::nextId() const { if (evaluateRadioButton->isChecked()) { return LicenseWizard::Page_Evaluate; } else { return LicenseWizard::Page_Register; } } int EvaluatePage::nextId() const { return LicenseWizard::Page_Conclusion; } int RegisterPage::nextId() const { if (upgradeKeyLineEdit->text().isEmpty()) { return LicenseWizard::Page_Details; } else { return LicenseWizard::Page_Conclusion; } } int DetailsPage::nextId() const { return LicenseWizard::Page_Conclusion; } int ConclusionPage::nextId() const { return -1; }
También sería posible poner toda la lógica en un solo lugar, en una reimplementación de QWizard::nextId(). Por ejemplo:
int LicenseWizard::nextId() const { switch (currentId()) { case Page_Intro: if (field("intro.evaluate").toBool()) { return Page_Evaluate; } else { return Page_Register; } case Page_Evaluate: return Page_Conclusion; case Page_Register: if (field("register.upgradeKey").toString().isEmpty()) { return Page_Details; } else { return Page_Conclusion; } case Page_Details: return Page_Conclusion; case Page_Conclusion: default: return -1; } }
Para empezar en otra página que no sea la página con el ID más bajo, llame a setStartId().
Para comprobar si una página ha sido visitada o no, llame a hasVisitedPage(). 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); }
Véase también QWizardPage, Ejemplo de asistente trivial y Ejemplo de asistente de licencias.
Documentación de tipos de miembros
enum QWizard::WizardButton
Este enum especifica los botones de un asistente.
| Constante | Valor | Descripción |
|---|---|---|
QWizard::BackButton | 0 | El botón Back (Go Back en macOS) |
QWizard::NextButton | 1 | El botón Next (Continue en macOS) |
QWizard::CommitButton | 2 | Botón Commit |
QWizard::FinishButton | 3 | El botón Finish (Done en macOS) |
QWizard::CancelButton | 4 | El botón Cancel (véase también NoCancelButton) |
QWizard::HelpButton | 5 | El botón Help (véase también HaveHelpButton) |
QWizard::CustomButton1 | 6 | El primer botón definido por el usuario (véase también HaveCustomButton1) |
QWizard::CustomButton2 | 7 | El segundo botón definido por el usuario (véase también HaveCustomButton2) |
QWizard::CustomButton3 | 8 | El tercer botón definido por el usuario (véase también HaveCustomButton3) |
El siguiente valor sólo es útil cuando se llama a setButtonLayout():
| Constante | Valor | Descripción |
|---|---|---|
QWizard::Stretch | 9 | Un tramo horizontal en el diseño del botón |
Ver también setButton(), setButtonText(), setButtonLayout(), y customButtonClicked().
enum QWizard::WizardOption
flags QWizard::WizardOptions
Este enum especifica varias opciones que afectan a la apariencia de un asistente.
| Constante | Valor | Descripción |
|---|---|---|
QWizard::IndependentPages | 0x00000001 | Las páginas son independientes entre sí (es decir, no derivan valores unas de otras). |
QWizard::IgnoreSubTitles | 0x00000002 | No mostrar ningún subtítulo, incluso si están configurados. |
QWizard::ExtendedWatermarkPixmap | 0x00000004 | Extienda cualquier WatermarkPixmap hasta el borde de la ventana. |
QWizard::NoDefaultButton | 0x00000008 | No haga que el botón Next o Finish sea el default button del diálogo. |
QWizard::NoBackButtonOnStartPage | 0x00000010 | No muestres el botón Back en la página de inicio. |
QWizard::NoBackButtonOnLastPage | 0x00000020 | No muestre el botón Back en la última página. |
QWizard::DisabledBackButtonOnLastPage | 0x00000040 | Desactivar el botón Back en la última página. |
QWizard::HaveNextButtonOnLastPage | 0x00000080 | Mostrar el botón (desactivado) Next en la última página. |
QWizard::HaveFinishButtonOnEarlyPages | 0x00000100 | Mostrar el botón (desactivado) Finish en las páginas no finales. |
QWizard::NoCancelButton | 0x00000200 | No mostrar el botón Cancel. |
QWizard::CancelButtonOnLeft | 0x00000400 | Coloque el botón Cancel a la izquierda de Back (en lugar de a la derecha de Finish o Next). |
QWizard::HaveHelpButton | 0x00000800 | Mostrar el botón Help. |
QWizard::HelpButtonOnRight | 0x00001000 | Coloque el botón Help en el extremo derecho del diseño de botones (en lugar de en el extremo izquierdo). |
QWizard::HaveCustomButton1 | 0x00002000 | Mostrar el primer botón definido por el usuario (CustomButton1). |
QWizard::HaveCustomButton2 | 0x00004000 | Mostrar el segundo botón definido por el usuario (CustomButton2). |
QWizard::HaveCustomButton3 | 0x00008000 | Mostrar el tercer botón definido por el usuario (CustomButton3). |
QWizard::NoCancelButtonOnLastPage | 0x00010000 | No muestre el botón Cancel en la última página. |
QWizard::StretchBanner | 0x00020000 | Si hay un banner, extiéndalo a todo lo ancho del asistente. |
El tipo WizardOptions es un typedef para QFlags<WizardOption>. Almacena una combinación OR de valores WizardOption.
Ver también setOptions(), setOption(), y testOption().
enum QWizard::WizardPixmap
Este enum especifica los mapas de píxeles que pueden asociarse a una página.
| Constante | Valor | Descripción |
|---|---|---|
QWizard::WatermarkPixmap | 0 | El mapa de píxeles alto de la parte izquierda de una página ClassicStyle o ModernStyle |
QWizard::LogoPixmap | 1 | El mapa de píxeles pequeño que ocupa el lado derecho de la cabecera de una página ClassicStyle o ModernStyle |
QWizard::BannerPixmap | 2 | El mapa de píxeles que ocupa el fondo de una cabecera de página ModernStyle |
QWizard::BackgroundPixmap | 3 | El mapa de píxeles que ocupa el fondo de un asistente MacStyle |
Véase también setPixmap(), QWizardPage::setPixmap(), y Elements of a Wizard Page.
enum QWizard::WizardStyle
Este enum especifica los diferentes looks soportados por QWizard.
| Constante | Valor | Descripción |
|---|---|---|
QWizard::ClassicStyle | 0 | Aspecto clásico de Windows |
QWizard::ModernStyle | 1 | Aspecto Windows moderno |
QWizard::MacStyle | 2 | Aspecto macOS |
QWizard::AeroStyle | 3 | Aspecto Aero de Windows |
Véase también setWizardStyle(), WizardOption, y Wizard Look and Feel.
Documentación de propiedades
currentId : int
Esta propiedad contiene el ID de la página actual
Por defecto, esta propiedad tiene un valor de -1, indicando que no se está mostrando ninguna página.
Funciones de acceso:
| int | currentId() const |
| void | setCurrentId(int id) |
Señal del notificador:
| void | currentIdChanged(int id) |
Véase también currentPage().
options : WizardOptions
Esta propiedad contiene las distintas opciones que afectan al aspecto del asistente
Por defecto, se establecen las siguientes opciones (dependiendo de la plataforma):
- Windows: HelpButtonOnRight.
- macOS: NoDefaultButton y NoCancelButton.
- X11 y QWS (Qt for Embedded Linux): ninguna.
Funciones de acceso:
| QWizard::WizardOptions | options() const |
| void | setOptions(QWizard::WizardOptions options) |
Véase también wizardStyle.
startId : int
Esta propiedad contiene el ID de la primera página
Si esta propiedad no se establece explícitamente, esta propiedad tiene por defecto el ID de página más bajo de este asistente, o -1 si aún no se ha insertado ninguna página.
Funciones de acceso:
| int | startId() const |
| void | setStartId(int id) |
Véase también restart() y nextId().
subTitleFormat : Qt::TextFormat
Esta propiedad contiene el formato de texto utilizado por los subtítulos de las páginas
El formato por defecto es Qt::AutoText.
Funciones de acceso:
| Qt::TextFormat | subTitleFormat() const |
| void | setSubTitleFormat(Qt::TextFormat format) |
Véase también QWizardPage::title y titleFormat.
titleFormat : Qt::TextFormat
Esta propiedad contiene el formato de texto utilizado por los títulos de las páginas
El formato por defecto es Qt::AutoText.
Funciones de acceso:
| Qt::TextFormat | titleFormat() const |
| void | setTitleFormat(Qt::TextFormat format) |
Véase también QWizardPage::title y subTitleFormat.
wizardStyle : WizardStyle
Esta propiedad mantiene la apariencia del asistente.
Por defecto, QWizard utiliza el AeroStyle en un sistema Windows Vista con la composición alfa activada, independientemente del estilo de widget actual. Si este no es el caso, el estilo predeterminado del asistente depende del estilo actual del widget de la siguiente manera: MacStyle es el predeterminado si el estilo actual del widget es QMacStyle, ModernStyle es el predeterminado si el estilo actual del widget es QWindowsStyle, y ClassicStyle es el predeterminado en todos los demás casos.
Funciones de acceso:
| QWizard::WizardStyle | wizardStyle() const |
| void | setWizardStyle(QWizard::WizardStyle style) |
Véase también Wizard Look and Feel y options.
Documentación de las funciones miembro
[explicit] QWizard::QWizard(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
Construye un asistente con la dirección parent y la ventana flags.
Véase también parent() y windowFlags().
[virtual noexcept] QWizard::~QWizard()
Destruye el asistente y sus páginas, liberando los recursos asignados.
int QWizard::addPage(QWizardPage *page)
Añade la página page al asistente y devuelve el ID de la página.
Se garantiza que el ID sea mayor que cualquier otro ID de QWizard hasta el momento.
Véase también setPage(), page() y pageAdded().
[slot] void QWizard::back()
Vuelve a la página anterior.
Equivale a pulsar el botón Back.
Véase también next(), accept(), reject() y restart().
QAbstractButton *QWizard::button(QWizard::WizardButton which) const
Devuelve el botón correspondiente al rol which.
Véase también setButton() y setButtonText().
QString QWizard::buttonText(QWizard::WizardButton which) const
Devuelve el texto del botón which.
Si se ha establecido un texto mediante setButtonText(), se devuelve dicho texto.
Por defecto, el texto de los botones depende de wizardStyle. Por ejemplo, en macOS, el botón Next se llama Continue.
Véase también button(), setButton(), setButtonText(), QWizardPage::buttonText() y QWizardPage::setButtonText().
[virtual protected] void QWizard::cleanupPage(int id)
Esta función virtual es llamada por QWizard para limpiar la página id justo antes de que el usuario la abandone haciendo clic en Back (a menos que la opción QWizard::IndependentPages esté activada).
La implementación por defecto llama a QWizardPage::cleanupPage() en page(id).
Véase también QWizardPage::cleanupPage() y initializePage().
[signal] void QWizard::currentIdChanged(int id)
Esta señal se emite cuando cambia la página actual, con la nueva corriente id.
Nota: Señal notificadora para la propiedad currentId.
Véase también currentId() y currentPage().
QWizardPage *QWizard::currentPage() const
Devuelve un puntero a la página actual, o nullptr si no hay página actual (por ejemplo, antes de que se muestre el asistente).
Esto es equivalente a llamar a page(currentId()).
Véase también page(), currentId() y restart().
[signal] void QWizard::customButtonClicked(int which)
Esta señal se emite cuando el usuario pulsa un botón personalizado. which puede ser CustomButton1, CustomButton2, o CustomButton3.
Por defecto, no se muestra ningún botón personalizado. Llame a setOption() con HaveCustomButton1, HaveCustomButton2, o HaveCustomButton3 para tener uno, y utilice setButtonText() o setButton() para configurarlo.
Véase también helpRequested().
[override virtual protected] void QWizard::done(int result)
Reimplementa: QDialog::done(int r).
[override virtual protected] bool QWizard::event(QEvent *event)
Reimplementa: QWidget::event(QEvent *event).
QVariant QWizard::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.
Véase también QWizardPage::registerField(), QWizardPage::field() y setField().
bool QWizard::hasVisitedPage(int id) const
Devuelve true si el historial de páginas contiene la página id; en caso contrario, devuelve false.
Al pulsar Back se vuelve a marcar la página actual como "no visitada".
Véase también visitedIds().
[signal] void QWizard::helpRequested()
Esta señal se emite cuando el usuario pulsa el botón Help.
Por defecto, no se muestra ningún botón Help. Llame a setOption(HaveHelpButton, true) para tener uno.
Ejemplo:
LicenseWizard::LicenseWizard(QWidget *parent) : QWizard(parent) { ... setOption(HaveHelpButton, true); connect(this, &QWizard::helpRequested, this, &LicenseWizard::showHelp); ... } void LicenseWizard::showHelp() { static QString lastHelpMessage; QString message; switch (currentId()) { case Page_Intro: message = tr("The decision you make here will affect which page you " "get to see next."); break; ... default: message = tr("This help is likely not to be of any help."); } QMessageBox::information(this, tr("License Wizard Help"), message); }
Véase también customButtonClicked().
[virtual protected] void QWizard::initializePage(int id)
Esta función virtual es llamada por QWizard para preparar la página id 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.
La implementación por defecto llama a QWizardPage::initializePage() en page(id).
Véase también QWizardPage::initializePage() y cleanupPage().
[override virtual protected] bool QWizard::nativeEvent(const QByteArray &eventType, void *message, qintptr *result)
Reimplementa: QWidget::nativeEvent(const QByteArray &eventType, void *message, qintptr *result).
[slot] void QWizard::next()
Avanza a la página siguiente.
Equivale a pulsar el botón Next o Commit.
Véase también nextId(), back(), accept(), reject() y restart().
[virtual] int QWizard::nextId() const
Esta función virtual es llamada por QWizard para averiguar qué página mostrar cuando el usuario pulsa el botón Next.
El valor de retorno es el ID de la página siguiente, o -1 si no hay ninguna página a continuación.
La implementación por defecto llama a QWizardPage::nextId() en currentPage().
Si reimplementa esta función, puede especificar un orden de páginas dinámico.
Véase también QWizardPage::nextId() y currentPage().
QWizardPage *QWizard::page(int id) const
Devuelve la página con el nombre id, o nullptr si no existe.
Véase también addPage() y setPage().
[signal] void QWizard::pageAdded(int id)
Esta señal se emite cada vez que se añade una página al asistente. La página id se pasa como parámetro.
Véase también addPage(), setPage() y startId().
QList<int> QWizard::pageIds() const
Devuelve la lista de identificadores de página.
[signal] void QWizard::pageRemoved(int id)
Esta señal se emite cada vez que se elimina una página del asistente. La página id se pasa como parámetro.
Véase también removePage() y startId().
[override virtual protected] void QWizard::paintEvent(QPaintEvent *event)
Reimplementa: QWidget::paintEvent(QPaintEvent *event).
QPixmap QWizard::pixmap(QWizard::WizardPixmap which) const
Devuelve el mapa de píxeles establecido para el rol which.
Por defecto, el único pixmap que se establece es el BackgroundPixmap en macOS.
Véase también setPixmap(), QWizardPage::pixmap(), y Elements of a Wizard Page.
void QWizard::removePage(int id)
Elimina la página con la propiedad id. Si es necesario, se llamará a cleanupPage().
Nota: Eliminar una página puede influir en el valor de la propiedad startId.
Véase también addPage(), setPage(), pageRemoved() y startId().
[override virtual protected] void QWizard::resizeEvent(QResizeEvent *event)
Reimplementa: QDialog::resizeEvent(QResizeEvent *).
[slot] void QWizard::restart()
Reinicia el asistente en la página de inicio. Esta función se llama automáticamente cuando se muestra el asistente.
Véase también startId().
void QWizard::setButton(QWizard::WizardButton which, QAbstractButton *button)
Establece el botón correspondiente al rol which a button.
Para añadir botones adicionales al asistente (por ejemplo, un botón Print ), una forma es llamar a setButton() con CustomButton1 a CustomButton3, y hacer visibles los botones utilizando las opciones HaveCustomButton1 a HaveCustomButton3.
Véase también button(), setButtonText(), setButtonLayout(), y options.
void QWizard::setButtonLayout(const QList<QWizard::WizardButton> &layout)
Establece el orden en que se muestran los botones en layout, donde layout es una lista de WizardButtons.
La disposición por defecto depende de las opciones (por ejemplo, si HelpButtonOnRight) que se establezcan. Puede llamar a esta función si necesita más control sobre la disposición de los botones que el que ya proporciona options.
Puede especificar tramos horizontales en la disposición utilizando Stretch.
Ejemplo:
MyWizard::MyWizard(QWidget *parent) : QWizard(parent) { //... QList<QWizard::WizardButton> layout; layout << QWizard::Stretch << QWizard::BackButton << QWizard::CancelButton << QWizard::NextButton << QWizard::FinishButton; setButtonLayout(layout); //... }
Véase también setButton(), setButtonText(), y setOptions().
void QWizard::setButtonText(QWizard::WizardButton which, const QString &text)
Establece que el texto del botón which sea text.
Por defecto, el texto de los botones depende de wizardStyle. Por ejemplo, en macOS, el botón Next se llama Continue.
Para añadir botones adicionales al asistente (por ejemplo, un botón Print ), una forma es llamar a setButtonText() con CustomButton1, CustomButton2, o CustomButton3 para establecer su texto, y hacer visibles los botones utilizando las opciones HaveCustomButton1, HaveCustomButton2, y/o HaveCustomButton3.
Los textos de los botones también pueden establecerse para cada página utilizando QWizardPage::setButtonText().
Véase también buttonText(), setButton(), button(), setButtonLayout(), setOptions() y QWizardPage::setButtonText().
[slot] void QWizard::setCurrentId(int id)
Establece currentId en id, sin visitar las páginas entre currentId y id.
Vuelve sin cambiar de página, si
- el asistente no tiene páginas
- la página actual no es válida
- la página dada es igual a currentId()
- la página dada está fuera de rango
Nota: Si se han saltado páginas hacia delante y id es 0, se borrará el historial de visitas a páginas
Nota: Función Setter para la propiedad currentId.
Véase también currentId().
void QWizard::setDefaultProperty(const char *className, const char *property, const char *changedSignal)
Establece la propiedad por defecto para className en property, y la señal de cambio asociada en changedSignal.
La propiedad por defecto se utiliza cuando se pasa una instancia de className (o de una de sus subclases) a QWizardPage::registerField() y no se especifica ninguna propiedad.
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() |
Véase también QWizardPage::registerField().
void QWizard::setField(const QString &name, const QVariant &value)
Establece el valor del campo llamado name a value.
Esta función se puede utilizar para establecer campos en cualquier página del asistente.
Véase también QWizardPage::registerField(), QWizardPage::setField() y field().
void QWizard::setOption(QWizard::WizardOption option, bool on = true)
Establece el option dado para que esté habilitado si on es verdadero; de lo contrario, borra el option dado.
Véase también options, testOption(), y setWizardStyle().
void QWizard::setPage(int id, QWizardPage *page)
Añade la página page al asistente con la propiedad id.
Nota: Añadir una página puede influir en el valor de la propiedad startId en caso de que no se haya establecido explícitamente.
Véase también addPage(), page(), y pageAdded().
void QWizard::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 una página específica utilizando QWizardPage::setPixmap().
Véase también pixmap(), QWizardPage::setPixmap(), y Elements of a Wizard Page.
void QWizard::setSideWidget(QWidget *widget)
Establece el widget dado para que se muestre en el lado izquierdo del asistente. Para los estilos que utilizan WatermarkPixmap (ClassicStyle y ModernStyle) el widget lateral se muestra encima de la marca de agua, para otros estilos o cuando no se proporciona la marca de agua el widget lateral se muestra en el lado izquierdo del asistente.
Si se pasa nullptr no se muestra el widget lateral.
Cuando el widget no es nullptr el asistente lo reparte.
Cualquier widget lateral anterior se oculta.
Puede llamar a setSideWidget() con el mismo widget en diferentes ocasiones.
Todos los widgets establecidos aquí serán eliminados por el asistente cuando se destruya, a menos que se reparente el widget por separado después de establecer algún otro widget lateral (o nullptr).
Por defecto, ningún widget lateral está presente.
Véase también sideWidget().
[override virtual] void QWizard::setVisible(bool visible)
Reimplementa: QDialog::setVisible(bool visible).
QWidget *QWizard::sideWidget() const
Devuelve el widget del lado izquierdo del asistente o nullptr.
Por defecto, no hay widget lateral.
Véase también setSideWidget().
[override virtual] QSize QWizard::sizeHint() const
Reimplementa: QDialog::sizeHint() const.
bool QWizard::testOption(QWizard::WizardOption option) const
Devuelve true si el option dado está habilitado; en caso contrario, devuelve false.
Véase también options, setOption(), y setWizardStyle().
[virtual] bool QWizard::validateCurrentPage()
Esta función virtual es llamada por QWizard 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 llama a QWizardPage::validatePage() en currentPage().
Cuando sea posible, suele ser mejor estilo desactivar el botón Next o Finish (especificando mandatory fields o reimplementando QWizardPage::isComplete()) que reimplementar validateCurrentPage().
Véase también QWizardPage::validatePage() y currentPage().
QList<int> QWizard::visitedIds() const
Devuelve la lista de IDs de las páginas visitadas, en el orden en que fueron visitadas.
Véase también hasVisitedPage().
© 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.







