QWizardPage Class
La classe `QWizardPage` est la classe de base des pages d'assistant. En savoir plus...
| En-tête : | #include <QWizardPage> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake : | QT += widgets |
| Hérite de : | QWidget |
Propriétés
Fonctions publiques
| 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() |
Signaux
| void | completeChanged() |
Fonctions protégées
| 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 |
Description détaillée
QWizard Représente un assistant. Chaque page est une instance de QWizardPage. Lorsque vous créez vos propres assistants, vous pouvez utiliser directement QWizardPage ou en créer une sous-classe pour bénéficier d'un contrôle accru.
Une page possède les attributs suivants, qui sont générés par QWizard: un title, un subTitle et un set of pixmaps. Voir Elements of a Wizard Page pour plus de détails. Une fois qu'une page est ajoutée à l'assistant (à l'aide de QWizard::addPage() ou QWizard::setPage()), wizard() renvoie un pointeur vers l'objet QWizard associé.
La classe `Page` fournit cinq fonctions virtuelles qui peuvent être réimplémentées pour offrir un comportement personnalisé :
- initializePage() est appelée pour initialiser le contenu de la page lorsque l’utilisateur clique sur le bouton « Next » de l’assistant. Si vous souhaitez dériver la valeur par défaut de la page à partir de ce que l’utilisateur a saisi sur les pages précédentes, c’est cette fonction qu’il faut réimplémenter.
- cleanupPage() est appelée pour réinitialiser le contenu de la page lorsque l’utilisateur clique sur le bouton « Back » de l’assistant.
- validatePage() valide la page lorsque l’utilisateur clique sur « Next » ou « Finish ». Elle est souvent utilisée pour afficher un message d’erreur si l’utilisateur a saisi des informations incomplètes ou non valides.
- nextId() renvoie l'ID de la page suivante. Elle est utile lorsque l'on utilise des boutons « creating non-linear wizards », qui permettent différents chemins de navigation en fonction des informations fournies par l'utilisateur.
- isComplete() est appelé pour déterminer si les boutons « Next » et/ou « Finish » doivent être activés ou désactivés. Si vous réimplémentez isComplete(), assurez-vous également que completeChanged() soit émis chaque fois que l’état de complétion change.
Normalement, les boutons « Next » et « Finish » d’un assistant s’excluent mutuellement. Si isFinalPage() renvoie true, Finish est disponible ; sinon, Next est disponible. Par défaut, isFinalPage() n’est vrai que lorsque nextId() renvoie -1. Si vous souhaitez afficher simultanément Next et Final pour une page (permettant ainsi à l’utilisateur d’effectuer une « fin anticipée »), appelez setFinalPage(true) sur cette page. Pour les assistants prenant en charge les fins anticipées, vous pouvez également définir les options HaveNextButtonOnLastPage et HaveFinishButtonOnEarlyPages sur l’assistant.
Dans de nombreux assistants, le contenu d’une page peut influencer les valeurs par défaut des champs d’une page suivante. Afin de faciliter la communication entre les pages, QWizard prend en charge une interface "field" mechanism qui vous permet d’enregistrer un champ (par exemple, un QLineEdit) sur une page et d’accéder à sa valeur depuis n’importe quelle page. Les champs sont globaux à l’ensemble de l’assistant et permettent à n’importe quelle page d’accéder facilement aux informations stockées par une autre page, sans avoir à placer toute la logique dans ` QWizard ` ni à ce que les pages aient explicitement connaissance les unes des autres. Les champs sont enregistrés à l’aide de ` registerField()` et sont accessibles à tout moment à l’aide de ` field()` et ` setField()`.
Voir également QWizard, Exemple d’assistant trivial et Exemple d’assistant de licence.
Documentation sur les propriétés
subTitle : QString
Cette propriété contient le sous-titre de la page
Le sous-titre est affiché par la propriété ` QWizard`, entre le titre et le contenu de la page. Les sous-titres sont facultatifs. Dans les pages ClassicStyle et ModernStyle, l'utilisation de sous-titres est nécessaire pour que l'en-tête s'affiche. Dans la page MacStyle, le sous-titre s'affiche sous forme d'étiquette de texte juste au-dessus du contenu de la page.
Le sous-titre peut être du texte brut ou du code HTML, selon la valeur de la propriété « QWizard::subTitleFormat ».
Par défaut, cette propriété contient une chaîne vide.
Fonctions d'accès :
| QString | subTitle() const |
| void | setSubTitle(const QString &subTitle) |
Voir également title, QWizard::IgnoreSubTitles et Elements of a Wizard Page.
title : QString
Cette propriété contient le titre de la page
Le titre s'affiche via l'QWizard, au-dessus de la page proprement dite. Toutes les pages doivent avoir un titre.
Le titre peut être du texte brut ou du code HTML, selon la valeur de la propriété « QWizard::titleFormat ».
Par défaut, cette propriété contient une chaîne vide.
Fonctions d'accès :
| QString | title() const |
| void | setTitle(const QString &title) |
Voir également subTitle et Elements of a Wizard Page.
Documentation des fonctions membres
[explicit] QWizardPage::QWizardPage(QWidget *parent = nullptr)
Crée une page d'assistant à partir de l'parent fournie.
Lorsque la page est insérée dans un assistant à l’aide de QWizard::addPage() ou QWizard::setPage(), l’élément parent est automatiquement défini comme étant l’assistant.
Voir également wizard().
[virtual noexcept] QWizardPage::~QWizardPage()
Destructeur.
QString QWizardPage::buttonText(QWizard::WizardButton which) const
Renvoie le texte du bouton which sur cette page.
Si un texte a été défini à l'aide de la méthode setButtonText(), c'est ce texte qui est renvoyé. Sinon, si un texte a été défini à l'aide de la méthode QWizard::setButtonText(), c'est ce texte qui est renvoyé.
Par défaut, le texte des boutons dépend de la méthode QWizard::wizardStyle. Par exemple, sous macOS, le bouton Next s’appelle Continue.
Voir également setButtonText(), QWizard::buttonText() et QWizard::setButtonText().
[virtual] void QWizardPage::cleanupPage()
Cette fonction virtuelle est appelée par ` QWizard::cleanupPage()` lorsque l'utilisateur quitte la page en cliquant sur ` Back ` (à moins que l'option ` QWizard::IndependentPages ` ne soit activée).
L'implémentation par défaut réinitialise les champs de la page à leurs valeurs d'origine (celles qu'ils avaient avant l'appel de initializePage()).
Voir également QWizard::cleanupPage(), initializePage() et QWizard::IndependentPages.
[signal] void QWizardPage::completeChanged()
Ce signal est émis chaque fois que l'état « complete » de la page (c'est-à-dire la valeur de ` isComplete()`) change.
Si vous réimplémentez la méthode isComplete(), veillez à émettre completeChanged() chaque fois que la valeur de isComplete() change, afin de garantir que QWizard mette à jour l’état activé ou désactivé de ses boutons.
Voir également isComplete().
[protected] QVariant QWizardPage::field(const QString &name) const
Renvoie la valeur du champ nommé « name ».
Cette fonction permet d'accéder aux champs de n'importe quelle page de l'assistant. Elle équivaut à appeler wizard()->field(name).
Exemple :
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);Voir également QWizard::field(), setField() et registerField().
[virtual] void QWizardPage::initializePage()
Cette fonction virtuelle est appelée par ` QWizard::initializePage()` afin de préparer la page juste avant son affichage, soit à la suite de l'appel de ` QWizard::restart()`, soit lorsque l'utilisateur clique sur ` Next`. (Toutefois, si l'option ` QWizard::IndependentPages ` est activée, cette fonction n'est appelée que lors du premier affichage de la page.)
En réimplémentant cette fonction, vous pouvez vous assurer que les champs de la page sont correctement initialisés en fonction des champs des pages précédentes. Par exemple :
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);
}L’implémentation par défaut ne fait rien.
Voir également QWizard::initializePage(), cleanupPage() et QWizard::IndependentPages.
bool QWizardPage::isCommitPage() const
Renvoie « true » si cette page est une page de validation ; sinon, renvoie « false ».
Voir aussi setCommitPage().
[virtual] bool QWizardPage::isComplete() const
Cette fonction virtuelle est appelée par ` QWizard ` afin de déterminer si le bouton ` Next ` ou ` Finish ` doit être activé ou désactivé.
L'implémentation par défaut renvoie « true » si tous les champs mandatory fields sont renseignés ; dans le cas contraire, elle renvoie « false ».
Si vous réimplémentez cette fonction, veillez à émettre completeChanged() depuis le reste de votre implémentation chaque fois que la valeur de isComplete() change. Cela garantit que QWizard met à jour l’état d’activation ou de désactivation de ses boutons. Un exemple de réimplémentation est disponible ici.
Voir également completeChanged() et isFinalPage().
bool QWizardPage::isFinalPage() const
Cette fonction est appelée par QWizard afin de déterminer si le bouton « Finish » doit s'afficher ou non sur cette page.
Par défaut, elle renvoie « true » s'il n'y a pas de page suivante (c'est-à-dire que nextId() renvoie -1) ; dans le cas contraire, elle renvoie « false ».
En appelant explicitement setFinalPage(true), vous pouvez permettre à l’utilisateur de « terminer plus tôt ».
Voir également isComplete() et QWizard::HaveFinishButtonOnEarlyPages.
[virtual] int QWizardPage::nextId() const
Cette fonction virtuelle est appelée par ` QWizard::nextId()` afin de déterminer quelle page afficher lorsque l'utilisateur clique sur le bouton « Next ».
La valeur renvoyée est l'ID de la page suivante, ou -1 s'il n'y a pas de page suivante.
Par défaut, cette fonction renvoie l'ID le plus bas supérieur à celui de la page actuelle, ou -1 s'il n'existe pas.
En réimplémentant cette fonction, vous pouvez définir un ordre dynamique des pages. Par exemple :
int IntroPage::nextId() const
{
if (evaluateRadioButton->isChecked()) {
return LicenseWizard::Page_Evaluate;
} else {
return LicenseWizard::Page_Register;
}
}Voir également ` QWizard::nextId()`.
QPixmap QWizardPage::pixmap(QWizard::WizardPixmap which) const
Renvoie la carte de pixels définie pour le rôle « which ».
Il est également possible de définir des pixmaps pour l'ensemble de l'assistant à l'aide de la fonction QWizard::setPixmap(), auquel cas celles-ci s'appliquent à toutes les pages qui ne spécifient pas de pixmap.
Voir également setPixmap(), QWizard::pixmap() et Elements of a Wizard Page.
[protected] void QWizardPage::registerField(const QString &name, QWidget *widget, const char *property = nullptr, const char *changedSignal = nullptr)
Crée un champ nommé « name » associé à l'property spécifiée de l'widget indiquée. Dès lors, cette propriété devient accessible via les méthodes field() et setField().
Les champs sont globaux à l’ensemble de l’assistant et permettent à n’importe quelle page d’accéder facilement aux informations stockées par une autre page, sans avoir à placer toute la logique dans QWizard ni à ce que les pages aient connaissance explicitement les unes des autres.
Si name se termine par un astérisque (*), le champ est obligatoire. Lorsqu’une page comporte des champs obligatoires, les boutons « Next » et/ou « Finish » ne sont activés que lorsque tous les champs obligatoires sont renseignés. Cela nécessite de spécifier un changedSignal, afin d’indiquer à QWizard de revérifier la valeur stockée par le champ obligatoire.
QWizard reconnaît les widgets Qt les plus courants. Pour ceux-ci (ou leurs sous-classes), vous n’avez pas besoin de spécifier un property ou un changedSignal. Le tableau ci-dessous répertorie ces widgets :
| Widget | Propriété | Signal de notification de modification |
|---|---|---|
| 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() |
Vous pouvez utiliser QWizard::setDefaultProperty() pour ajouter des entrées à cette table ou pour remplacer des entrées existantes.
Pour considérer qu’un champ est « renseigné », la méthode ` QWizard ` vérifie simplement que sa valeur actuelle n’est pas égale à sa valeur d’origine (celle qu’il avait avant l’appel de ` initializePage()`). Pour ` QLineEdit`, elle vérifie également que la méthode ` hasAcceptableInput()` renvoie `true`, afin de respecter tout validateur ou masque.
QWizardLe mécanisme de champs obligatoires de `xml-ph-0002` est fourni à titre de commodité. Il peut être contourné en réimplémentant ` QWizardPage::isComplete()`.
Voir également field(), setField() et QWizard::setDefaultProperty().
void QWizardPage::setButtonText(QWizard::WizardButton which, const QString &text)
Définit le texte du bouton « which » sur « text » sur cette page.
Par défaut, le texte des boutons dépend de l'QWizard::wizardStyle, mais peut être redéfini pour l'assistant dans son ensemble à l'aide de QWizard::setButtonText().
Voir également buttonText(), QWizard::setButtonText() et QWizard::buttonText().
void QWizardPage::setCommitPage(bool commitPage)
Définit cette page comme une page de validation si la valeur de commitPage est « true » ; dans le cas contraire, la définit comme une page normale.
Une page de validation est une page qui représente une action qui ne peut pas être annulée en cliquant sur « Back » ou « Cancel ».
Sur une page de validation, le bouton « Commit » remplace le bouton « Next ». Cliquer sur ce bouton appelle simplement la fonction QWizard::next(), tout comme le fait de cliquer sur « Next ».
Le bouton « Back » est désactivé sur une page accessible directement depuis une page de validation.
Voir également isCommitPage().
[protected] void QWizardPage::setField(const QString &name, const QVariant &value)
Définit la valeur du champ « name » sur « value ».
Cette fonction peut être utilisée pour définir des champs sur n'importe quelle page de l'assistant. Elle équivaut à appeler wizard()->setField(name, value).
Voir également QWizard::setField(), field() et registerField().
void QWizardPage::setFinalPage(bool finalPage)
Définit explicitement cette page comme finale si la valeur de ` finalPage ` est `true`.
Après avoir appelé setFinalPage(true), la méthode isFinalPage() renvoie true et le bouton « Finish » est visible (et activé si la méthode isComplete() renvoie true).
Après avoir appelé setFinalPage(false), la méthode isFinalPage() renvoie true si la méthode nextId() renvoie -1 ; sinon, elle renvoie false.
Voir également isFinalPage(), isComplete() et QWizard::HaveFinishButtonOnEarlyPages.
void QWizardPage::setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap)
Définit la carte de pixels du rôle « which » sur « pixmap ».
Les images pixmap sont utilisées par ` QWizard ` lors de l'affichage d'une page. Les images pixmap effectivement utilisées dépendent de ` wizard style`.
Les images pixmap peuvent également être définies pour l’ensemble de l’assistant à l’aide de la fonction ` QWizard::setPixmap()`, auquel cas elles s’appliquent à toutes les pages qui ne spécifient pas d’image pixmap.
Voir également pixmap(), QWizard::setPixmap() et Elements of a Wizard Page.
[virtual] bool QWizardPage::validatePage()
Cette fonction virtuelle est appelée par ` QWizard::validateCurrentPage()` lorsque l'utilisateur clique sur Next ou Finish afin d'effectuer une validation de dernière minute. Si elle renvoie ` true`, la page suivante s'affiche (ou l'assistant se termine) ; dans le cas contraire, la page actuelle reste affichée.
L'implémentation par défaut renvoie true.
Dans la mesure du possible, il est généralement préférable de désactiver le bouton « Next » ou « Finish » (en spécifiant ` mandatory fields ` ou en réimplémentant ` isComplete()`) plutôt que de réimplémenter `validatePage()`.
Voir également QWizard::validateCurrentPage() et isComplete().
[protected] QWizard *QWizardPage::wizard() const
Renvoie l'assistant associé à cette page, ou nullptr si cette page n'a pas encore été insérée dans un QWizard.
Voir aussi QWizard::addPage() et 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.