QWizard Class
La classe QWizard fournit un cadre de travail pour les assistants. En savoir plus...
| En-tête : | #include <QWizard> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake : | QT += widgets |
| Hérite de : | QDialog |
Types publics
| 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 } |
Propriétés
|
Fonctions publiques
| 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 |
Fonctions publiques réimplémentées
| virtual void | setVisible(bool visible) override |
| virtual QSize | sizeHint() const override |
Slots publics
| void | back() |
| void | next() |
| void | restart() |
| void | setCurrentId(int id) |
Signaux
| void | currentIdChanged(int id) |
| void | customButtonClicked(int which) |
| void | helpRequested() |
| void | pageAdded(int id) |
| void | pageRemoved(int id) |
Fonctions protégées
| virtual void | cleanupPage(int id) |
| virtual void | initializePage(int id) |
Fonctions protégées réimplémentées
| 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 |
Description détaillée
Un assistant (également appelé « assistant » sous macOS) est un type particulier de boîte de dialogue de saisie composé d’une séquence de pages. L’objectif d’un assistant est de guider l’utilisateur pas à pas tout au long d’un processus. Les assistants sont utiles pour les tâches complexes ou peu fréquentes que les utilisateurs peuvent avoir du mal à maîtriser.
QWizard hérite de l'interface QDialog et représente un assistant. Chaque page est une instance de QWizardPage (une sous-classe de QWidget ). Pour créer vos propres assistants, vous pouvez utiliser directement ces classes ou en créer des sous-classes afin de bénéficier d'un contrôle accru.
Un exemple simple
L'exemple suivant illustre comment créer des pages d'assistant et les ajouter à un assistant. Pour des exemples plus avancés, consultez l'assistant de licence.
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);
#if QT_CONFIG(translation)
QTranslator translator;
for (const QString &trPath : QLibraryInfo::paths(QLibraryInfo::TranslationsPath)) {
if (translator.load(QLocale(), u"qtbase"_s, u"_"_s, trPath)) {
app.installTranslator(&translator);
break;
}
}
#endif
QWizard wizard;
wizard.addPage(createIntroPage());
wizard.addPage(createRegistrationPage());
wizard.addPage(createConclusionPage());
wizard.setWindowTitle("Trivial Wizard");
wizard.show();
return app.exec();
}Aspect et ergonomie de l'assistant
QWizard prend en charge quatre styles d'assistant :
Vous pouvez définir explicitement l'apparence à utiliser à l'aide de la méthode setWizardStyle() (par exemple, si vous souhaitez que l'apparence soit identique sur toutes les plateformes).
Remarque : la fonction ` AeroStyle ` n'a d'effet que sur un système Windows Vista où la composition alpha est activée. La fonction ` ModernStyle ` est utilisée comme solution de secours lorsque cette condition n'est pas remplie.
Outre le style de l’assistant, plusieurs options permettent de contrôler son apparence. Elles peuvent être définies à l’aide de ` setOption()` ou ` setOptions()`. Par exemple, ` HaveHelpButton ` fait en sorte que `QWizard` affiche un bouton « Help » aux côtés des autres boutons de l’assistant.
Vous pouvez même modifier l’ordre des boutons de l’assistant à votre guise à l’aide de setButtonLayout(), et vous pouvez ajouter jusqu’à trois boutons personnalisés (par exemple, un bouton Print ) à la rangée de boutons. Pour ce faire, appelez setButton() ou setButtonText() avec CustomButton1, CustomButton2 ou CustomButton3 pour configurer le bouton, puis activez les options HaveCustomButton1, HaveCustomButton2 ou HaveCustomButton3. Chaque fois que l’utilisateur clique sur un bouton personnalisé, un événement ` customButtonClicked()` est déclenché. Par exemple :
wizard()->setButtonText(QWizard::CustomButton1, tr("&Print"));
wizard()->setOption(QWizard::HaveCustomButton1, true);
connect(wizard(), &QWizard::customButtonClicked,
this, &ConclusionPage::printButtonClicked);Éléments d'une page d'assistant
Les assistants se composent d’une séquence de pages d’ QWizardPage. À tout moment, une seule page est affichée. Une page possède les attributs suivants :
- Une title.
- Une subTitle.
- Un ensemble de pixmaps, qui peuvent être pris en compte ou non, selon le style de l’assistant :
- WatermarkPixmap (utilisées par ` ClassicStyle ` et ` ModernStyle`)
- BannerPixmap (utilisé par ModernStyle)
- LogoPixmap (utilisé par ClassicStyle et ModernStyle)
- BackgroundPixmap (utilisé par MacStyle)
Le schéma ci-dessous montre comment QWizard affiche ces attributs, en supposant qu'ils soient tous présents et que ModernStyle soit utilisé :

Lorsqu’un subTitle est défini, QWizard l’affiche dans un en-tête ; dans ce cas, il utilise également les éléments BannerPixmap et LogoPixmap pour décorer l’en-tête. L’ WatermarkPixmap e s’affiche à gauche, sous l’en-tête. En bas, une rangée de boutons permet à l’utilisateur de naviguer entre les pages.
La page elle-même (le widget « QWizardPage ») occupe la zone située entre l’en-tête, le filigrane et la rangée de boutons. En général, la page est un « QWizardPage » sur lequel est installé un « QGridLayout », avec des widgets enfants standard («QLabels », « QLineEdits », etc.).
Si le style de l’assistant est MacStyle, la page présente un aspect radicalement différent :

Les images de filigrane, de bannière et de logo sont ignorées par l’ MacStyle. Si l’ BackgroundPixmap est défini, il est utilisé comme arrière-plan de l’assistant ; sinon, une image « assistant » par défaut est utilisée.
Le titre et le sous-titre sont définis en appelant les méthodes QWizardPage::setTitle() et QWizardPage::setSubTitle() sur chaque page. Ils peuvent être du texte brut ou du code HTML (voir titleFormat et subTitleFormat). Les images peuvent être définies globalement pour l’ensemble de l’assistant à l’aide de la méthode setPixmap(), ou page par page à l’aide de la méthode QWizardPage::setPixmap().
Enregistrement et utilisation des champs
Dans de nombreux assistants, le contenu d’une page peut influencer les valeurs par défaut des champs d’une page suivante. Pour faciliter la communication entre les pages, QWizard prend en charge un mécanisme de « champs » 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. Il est également possible de définir des champs obligatoires (c'est-à-dire des champs qui doivent être renseignés avant que l'utilisateur puisse passer à la page suivante).
Pour enregistrer un champ, appelez la fonction QWizardPage::registerField() field. Par exemple :
registerField("evaluate.name*", nameLineEdit);
registerField("evaluate.email*", emailLineEdit);Le code ci-dessus enregistre trois champs, className, baseClass et qobjectMacro, qui sont associés à trois widgets enfants. L'astérisque (*) à côté de className indique qu'il s'agit d'un champ obligatoire.
Les champs de n'importe quelle page sont accessibles depuis n'importe quelle autre page. 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);
}Ici, nous appelons QWizardPage::field() pour accéder au contenu du champ details.email (qui a été défini dans DetailsPage) et l'utilisons pour initialiser ConclusionPage. Le contenu du champ est renvoyé sous la forme d'un QVariant.
Lorsque nous créons un champ à l’aide de ` QWizardPage::registerField()``, nous passons un nom de champ unique et un widget. Nous pouvons également fournir un nom de propriété Qt et un signal « changed » (un signal émis lorsque la propriété change) en tant que troisième et quatrième arguments ; cependant, cela n’est pas nécessaire pour les Qt Widgets les plus courants, tels que QLineEdit, QCheckBox et QComboBox, car QWizard sait quelles propriétés rechercher.
Si un astérisque (*) est ajouté au nom lors de l'enregistrement de la propriété, 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.
Pour considérer qu’un champ est « renseigné », QWizard vérifie simplement que la valeur actuelle du champ n’est pas égale à la valeur d’origine (celle qu’il avait lorsque initializePage() a été appelé). Pour les sous-classes QLineEdit et QAbstractSpinBox, QWizard vérifie également que hasAcceptableInput() renvoie « true », afin de respecter tout validateur ou masque.
Le mécanisme de champs obligatoires de QWizard est fourni à titre de commodité. Une alternative plus puissante (mais aussi plus fastidieuse) consiste à réimplémenter la méthode ` QWizardPage::isComplete()` et à émettre le signal ` QWizardPage::completeChanged()` chaque fois que la page devient complète ou incomplète.
L'état activé/désactivé des boutons « Next » et/ou « Finish » constitue un moyen de valider les données saisies par l'utilisateur. Une autre méthode consiste à réimplémenter la fonction validateCurrentPage() (ou QWizardPage::validatePage()) pour effectuer une validation de dernière minute (et afficher un message d’erreur si l’utilisateur a saisi des informations incomplètes ou invalides). Si la fonction renvoie true, la page suivante s’affiche (ou l’assistant se termine) ; dans le cas contraire, la page actuelle reste affichée.
Création d'assistants linéaires
La plupart des assistants ont une structure linéaire, la page 1 étant suivie de la page 2, et ainsi de suite jusqu’à la dernière page. L’exemple « Trivial Wizard » est un assistant de ce type. Avec QWizard, les assistants linéaires sont créés en instanciant les objets ` QWizardPage` et en les insérant à l’aide de la méthode ` addPage()` (). Par défaut, les pages s’affichent dans l’ordre dans lequel elles ont été ajoutées. Par exemple :
QWizard wizard;
wizard.addPage(createIntroPage());
wizard.addPage(createRegistrationPage());
wizard.addPage(createConclusionPage());Lorsqu’une page est sur le point d’être affichée, QWizard appelle initializePage() (qui appelle à son tour QWizardPage::initializePage()) pour remplir la page avec les valeurs par défaut. Par défaut, cette fonction ne fait rien, mais elle peut être réimplémentée pour initialiser le contenu de la page en fonction des champs d’autres pages (voir l’ example above).
Si l’utilisateur clique sur Back, la fonction cleanupPage() est appelée (qui, à son tour, appelle QWizardPage::cleanupPage()). 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()). Si vous souhaitez que le bouton « Back » soit non destructif et conserve les valeurs saisies par l’utilisateur, il suffit d’activer l’option IndependentPages.
Création d’assistants non linéaires
Certains assistants sont plus complexes dans la mesure où ils permettent différents parcours en fonction des informations fournies par l’utilisateur. L’exemple de l’assistant de licence illustre ce principe. Il propose plusieurs pages d’assistant ; selon les options sélectionnées, l’utilisateur peut accéder à différentes pages.

Dans les assistants complexes, les pages sont identifiées par des identifiants (ID). Ces identifiants sont généralement définis à l’aide d’une énumération. Par exemple :
class LicenseWizard : public QWizard
{
...
enum { Page_Intro, Page_Evaluate, Page_Register, Page_Details,
Page_Conclusion };
...
};Les pages sont insérées à l’aide de la méthode ` setPage()`, qui prend en paramètre un identifiant et une instance de ` QWizardPage ` (ou d’une sous-classe) :
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);
...
}Par défaut, les pages s’affichent par ordre croissant d’identifiant. Pour définir un ordre dynamique en fonction des options choisies par l’utilisateur, il faut réimplémenter la méthode ` QWizardPage::nextId()`. Par exemple :
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;
}Il serait également possible de regrouper toute la logique en un seul endroit, dans une réimplémentation de ` QWizard::nextId()`. Par exemple :
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;
}
}Pour commencer par une autre page que celle dont l’ID est le plus bas, appelez ` setStartId()`.
Pour vérifier si une page a été visitée ou non, appelez ` hasVisitedPage()`. 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);
}Voir également ` QWizardPage`, Exemple d’assistant simple et Exemple d’assistant de licence.
Documentation sur les types de membres
enum QWizard::WizardButton
Cette énumération définit les boutons d'un assistant.
| Constante | Valeur | Description |
|---|---|---|
QWizard::BackButton | 0 | Le bouton « Back » (Go Back sous macOS) |
QWizard::NextButton | 1 | Le bouton « Next » (Continue sous macOS) |
QWizard::CommitButton | 2 | Le bouton « Commit » |
QWizard::FinishButton | 3 | Le bouton « Finish » (Done sous macOS) |
QWizard::CancelButton | 4 | Le bouton « Cancel » (voir aussi NoCancelButton) |
QWizard::HelpButton | 5 | Le bouton « Help » (voir aussi HaveHelpButton) |
QWizard::CustomButton1 | 6 | Le premier bouton défini par l'utilisateur (voir aussi HaveCustomButton1) |
QWizard::CustomButton2 | 7 | Le deuxième bouton défini par l'utilisateur (voir également HaveCustomButton2) |
QWizard::CustomButton3 | 8 | Le troisième bouton défini par l'utilisateur (voir aussi HaveCustomButton3) |
La valeur suivante n'est utile que lors de l'appel de la fonction setButtonLayout() :
| Constante | Valeur | Description |
|---|---|---|
QWizard::Stretch | 9 | Un étirement horizontal dans la disposition des boutons |
Voir également setButton(), setButtonText(), setButtonLayout() et customButtonClicked().
enum QWizard::WizardOption
flags QWizard::WizardOptions
Cette énumération définit diverses options qui influent sur l'apparence et le comportement d'un assistant.
| Constante | Valeur | Description |
|---|---|---|
QWizard::IndependentPages | 0x00000001 | Les pages sont indépendantes les unes des autres (c'est-à-dire qu'elles ne dérivent pas leurs valeurs les unes des autres). |
QWizard::IgnoreSubTitles | 0x00000002 | Ne pas afficher de sous-titres, même s'ils sont définis. |
QWizard::ExtendedWatermarkPixmap | 0x00000004 | Étendre toute la zone « WatermarkPixmap » jusqu'au bord de la fenêtre. |
QWizard::NoDefaultButton | 0x00000008 | Ne pas faire du bouton « Next » ou « Finish » l'default button de la boîte de dialogue. |
QWizard::NoBackButtonOnStartPage | 0x00000010 | Ne pas afficher le bouton « Back » sur la page d’accueil. |
QWizard::NoBackButtonOnLastPage | 0x00000020 | Ne pas afficher le bouton « Back » sur la dernière page. |
QWizard::DisabledBackButtonOnLastPage | 0x00000040 | Désactiver le bouton « Back » sur la dernière page. |
QWizard::HaveNextButtonOnLastPage | 0x00000080 | Afficher le bouton « Next » (désactivé) sur la dernière page. |
QWizard::HaveFinishButtonOnEarlyPages | 0x00000100 | Afficher le bouton « Finish » (désactivé) sur les pages autres que la dernière. |
QWizard::NoCancelButton | 0x00000200 | Ne pas afficher le bouton « Cancel ». |
QWizard::CancelButtonOnLeft | 0x00000400 | Placer le bouton « Cancel » à gauche de Back (plutôt qu’à droite de Finish ou Next). |
QWizard::HaveHelpButton | 0x00000800 | Afficher le bouton « Help ». |
QWizard::HelpButtonOnRight | 0x00001000 | Placez le bouton « Help » à l’extrême droite de la disposition des boutons (plutôt qu’à l’extrême gauche). |
QWizard::HaveCustomButton1 | 0x00002000 | Afficher le premier bouton défini par l’utilisateur (CustomButton1). |
QWizard::HaveCustomButton2 | 0x00004000 | Afficher le deuxième bouton défini par l'utilisateur (CustomButton2). |
QWizard::HaveCustomButton3 | 0x00008000 | Afficher le troisième bouton défini par l’utilisateur (CustomButton3). |
QWizard::NoCancelButtonOnLastPage | 0x00010000 | Ne pas afficher le bouton « Cancel » sur la dernière page. |
QWizard::StretchBanner | 0x00020000 | S'il y a un « banner », étirez-le sur toute la largeur de l'assistant. |
Le type WizardOptions est un typedef pour QFlags<WizardOption>. Il stocke une combinaison OR de valeurs WizardOption.
Voir également setOptions(), setOption() et testOption().
enum QWizard::WizardPixmap
Cette énumération spécifie les images bitmap pouvant être associées à une page.
| Constante | Valeur | Description |
|---|---|---|
QWizard::WatermarkPixmap | 0 | La carte de pixels haute située à gauche d'une page ClassicStyle ou ModernStyle |
QWizard::LogoPixmap | 1 | La petite image située à droite de l'en-tête d'une page ClassicStyle ou ModernStyle |
QWizard::BannerPixmap | 2 | L'image qui occupe l'arrière-plan de l'en-tête d'une page ModernStyle |
QWizard::BackgroundPixmap | 3 | L'image qui occupe l'arrière-plan d'un assistant MacStyle |
Voir également setPixmap(), QWizardPage::setPixmap() et Elements of a Wizard Page.
enum QWizard::WizardStyle
Cette énumération définit les différents styles pris en charge par QWizard.
| Constante | Valeur | Description |
|---|---|---|
QWizard::ClassicStyle | 0 | Apparence Windows classique |
QWizard::ModernStyle | 1 | Apparence Windows moderne |
QWizard::MacStyle | 2 | Style macOS |
QWizard::AeroStyle | 3 | Style Windows Aero |
Voir aussi setWizardStyle(), WizardOption et Wizard Look and Feel.
Documentation sur les propriétés
currentId : int
Cette propriété contient l'identifiant de la page actuelle
Par défaut, cette propriété a pour valeur -1, ce qui indique qu'aucune page n'est actuellement affichée.
Fonctions d'accès :
| int | currentId() const |
| void | setCurrentId(int id) |
Signal de notification :
| void | currentIdChanged(int id) |
Voir aussi currentPage().
options : WizardOptions
Cette propriété contient les différentes options qui influent sur l'apparence et le comportement de l'assistant
Par défaut, les options suivantes sont définies (selon la plate-forme) :
- Windows : HelpButtonOnRight.
- macOS : NoDefaultButton et NoCancelButton.
- X11 et QWS (Qt pour Linux embarqué) : aucune.
Fonctions d’accès :
| QWizard::WizardOptions | options() const |
| void | setOptions(QWizard::WizardOptions options) |
Voir également wizardStyle.
startId : int
Cette propriété contient l'identifiant de la première page
Si cette propriété n'est pas explicitement définie, elle prend par défaut la valeur de l'ID de page le plus bas de cet assistant, ou -1 si aucune page n'a encore été insérée.
Fonctions d'accès :
| int | startId() const |
| void | setStartId(int id) |
Voir également restart() et nextId().
subTitleFormat : Qt::TextFormat
Cette propriété définit le format de texte utilisé pour les sous-titres des pages
Le format par défaut est « Qt::AutoText ».
Fonctions d'accès :
| Qt::TextFormat | subTitleFormat() const |
| void | setSubTitleFormat(Qt::TextFormat format) |
Voir également QWizardPage::title et titleFormat.
titleFormat : Qt::TextFormat
Cette propriété contient le format de texte utilisé pour les titres de page
Le format par défaut est Qt::AutoText.
Fonctions d'accès :
| Qt::TextFormat | titleFormat() const |
| void | setTitleFormat(Qt::TextFormat format) |
Voir également QWizardPage::title et subTitleFormat.
wizardStyle : WizardStyle
Cette propriété définit l'apparence et le comportement de l'assistant
Par défaut, QWizard utilise le style AeroStyle sur un système Windows Vista avec la composition alpha activée, quel que soit le style de widget actuel. Si ce n'est pas le cas, le style par défaut de l'assistant dépend du style actuel du widget comme suit : MacStyle est le style par défaut si le style actuel du widget est QMacStyle, ModernStyle est le style par défaut si le style actuel du widget est QWindowsStyle, et ClassicStyle est le style par défaut dans tous les autres cas.
Fonctions d’accès :
| QWizard::WizardStyle | wizardStyle() const |
| void | setWizardStyle(QWizard::WizardStyle style) |
Voir également Wizard Look and Feel et options.
Documentation des fonctions membres
[explicit] QWizard::QWizard(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
Crée un assistant avec l'parent et la fenêtre flags indiquées.
Voir également parent() et windowFlags().
[virtual noexcept] QWizard::~QWizard()
Détruit l'assistant et ses pages, et libère toutes les ressources allouées.
int QWizard::addPage(QWizardPage *page)
Ajoute l'page ion indiquée à l'assistant et renvoie l'ID de la page.
L'ID est garanti d'être supérieur à tout autre ID de l'QWizard jusqu'à présent.
Voir également ` setPage()`, ` page()` et ` pageAdded()`.
[slot] void QWizard::back()
Permet de revenir à la page précédente.
Cela revient à cliquer sur le bouton « Back ».
Voir également next(), accept(), reject() et restart().
QAbstractButton *QWizard::button(QWizard::WizardButton which) const
Renvoie le bouton correspondant au rôle « which ».
Voir également setButton() et setButtonText().
QString QWizard::buttonText(QWizard::WizardButton which) const
Renvoie le texte affiché sur le bouton « which ».
Si un texte a été défini à l’aide de la fonction setButtonText(), c’est ce texte qui est renvoyé.
Par défaut, le texte des boutons dépend de la valeur de ` wizardStyle`. Par exemple, sous macOS, le bouton « Next » s’appelle « Continue ».
Voir également button(), setButton(), setButtonText(), QWizardPage::buttonText() et QWizardPage::setButtonText().
[virtual protected] void QWizard::cleanupPage(int id)
Cette fonction virtuelle est appelée par QWizard pour vider la page id juste avant que l'utilisateur ne la quitte en cliquant sur Back (à moins que l'option QWizard::IndependentPages ne soit activée).
L’implémentation par défaut appelle QWizardPage::cleanupPage() sur la page (id).
Voir également QWizardPage::cleanupPage() et initializePage().
[signal] void QWizard::currentIdChanged(int id)
Ce signal est émis lorsque la page active change, la nouvelle page active étant id.
Remarque : signalde notification pour la propriété currentId.
Voir également currentId() et currentPage().
QWizardPage *QWizard::currentPage() const
Renvoie un pointeur vers la page actuelle, ou nullptr s'il n'y a pas de page actuelle (par exemple, avant l'affichage de l'assistant).
Cela revient à appeler page(currentId()).
Voir également page(), currentId() et restart().
[signal] void QWizard::customButtonClicked(int which)
Ce signal est émis lorsque l'utilisateur clique sur un bouton personnalisé. which peut prendre les valeurs suivantes : CustomButton1, CustomButton2 ou CustomButton3.
Par défaut, aucun bouton personnalisé n’est affiché. Appelez setOption() avec HaveCustomButton1, HaveCustomButton2 ou HaveCustomButton3 pour en afficher un, puis utilisez setButtonText() ou setButton() pour le configurer.
Voir également helpRequested().
[override virtual protected] void QWizard::done(int result)
Réimplémente : QDialog::done(int r).
[override virtual protected] bool QWizard::event(QEvent *event)
Réimplémente : QWidget::event(QEvent *event).
QVariant QWizard::field(const QString &name) const
Renvoie la valeur du champ intitulé « name ».
Cette fonction permet d'accéder aux champs de n'importe quelle page de l'assistant.
Voir également QWizardPage::registerField(), QWizardPage::field() et setField().
bool QWizard::hasVisitedPage(int id) const
Renvoie true si l'historique de la page contient l'id; sinon, renvoie false.
En appuyant sur Back, la page actuelle est à nouveau marquée comme « non visitée ».
Voir aussi visitedIds().
[signal] void QWizard::helpRequested()
Ce signal est émis lorsque l'utilisateur clique sur le bouton « Help ».
Par défaut, aucun bouton « Help » n'est affiché. Appelez la fonction ` setOption(HaveHelpButton, true)` pour en afficher un.
Exemple :
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);
}Voir aussi customButtonClicked().
[virtual protected] void QWizard::initializePage(int id)
Cette fonction virtuelle est appelée par QWizard pour préparer l'id de la page juste avant son affichage, soit à la suite de l'appel de la fonction 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.
L'implémentation par défaut appelle la fonction ` QWizardPage::initializePage()` sur la page `id`.
Voir également ` QWizardPage::initializePage()` et ` cleanupPage()`.
[override virtual protected] bool QWizard::nativeEvent(const QByteArray &eventType, void *message, qintptr *result)
Réimplémente : QWidget::nativeEvent(const QByteArray &eventType, void *message, qintptr *result).
[slot] void QWizard::next()
Passe à la page suivante.
Cela revient à cliquer sur le bouton « Next » ou « Commit ».
Voir également nextId(), back(), accept(), reject() et restart().
[virtual] int QWizard::nextId() const
Cette fonction virtuelle est appelée par ` QWizard ` 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.
L'implémentation par défaut appelle ` QWizardPage::nextId()` dans ` currentPage()`.
En réimplémentant cette fonction, vous pouvez spécifier un ordre dynamique des pages.
Voir également QWizardPage::nextId() et currentPage().
QWizardPage *QWizard::page(int id) const
Renvoie la page dont l'id est indiquée, ou nullptr si cette page n'existe pas.
Voir également addPage() et setPage().
[signal] void QWizard::pageAdded(int id)
Ce signal est émis chaque fois qu’une page est ajoutée à l’assistant. L’ id de la page est transmise en tant que paramètre.
Voir également addPage(), setPage() et startId().
QList<int> QWizard::pageIds() const
Renvoie la liste des identifiants de page.
[signal] void QWizard::pageRemoved(int id)
Ce signal est émis chaque fois qu'une page est supprimée de l'assistant. L'id de la page est transmise en tant que paramètre.
Voir également removePage() et startId().
[override virtual protected] void QWizard::paintEvent(QPaintEvent *event)
Réimplémente : QWidget::paintEvent(QPaintEvent *event).
QPixmap QWizard::pixmap(QWizard::WizardPixmap which) const
Renvoie la carte de pixels définie pour le rôle « which ».
Par défaut, la seule image définie est « BackgroundPixmap » sous macOS.
Voir aussi ` setPixmap()`, ` QWizardPage::pixmap()` et ` Elements of a Wizard Page`.
void QWizard::removePage(int id)
Supprime la page dont l'id est indiquée. La fonction cleanupPage() sera appelée si nécessaire.
Remarque : la suppression d’une page peut avoir une incidence sur la valeur de la propriété ` startId `.
Voir également addPage(), setPage(), pageRemoved() et startId().
[override virtual protected] void QWizard::resizeEvent(QResizeEvent *event)
Réimplémente : QDialog::resizeEvent(QResizeEvent *).
[slot] void QWizard::restart()
Relance l'assistant à partir de la page d'accueil. Cette fonction est appelée automatiquement lorsque l'assistant s'affiche.
Voir également startId().
void QWizard::setButton(QWizard::WizardButton which, QAbstractButton *button)
Définit le bouton correspondant au rôle « which » sur « button ».
Pour ajouter des boutons supplémentaires à l'assistant (par exemple, un bouton « Print »), une solution consiste à appeler la méthode `setButton()` en remplaçant ` CustomButton1 ` par ` CustomButton3`, puis à rendre les boutons visibles à l'aide des options ` HaveCustomButton1 ` et ` HaveCustomButton3 `.
Voir également button(), setButtonText(), setButtonLayout() et options.
void QWizard::setButtonLayout(const QList<QWizard::WizardButton> &layout)
Définit l'ordre d'affichage des boutons sur layout, où layout est une liste d'WizardButton.
La disposition par défaut dépend des options définies (par exemple, si HelpButtonOnRight). Vous pouvez appeler cette fonction si vous avez besoin d'un contrôle plus poussé sur la disposition des boutons que ce qu’ options offre déjà.
Vous pouvez spécifier des étirements horizontaux dans la mise en page à l'aide de Stretch.
Exemple :
MyWizard::MyWizard(QWidget *parent)
: QWizard(parent)
{
//...
QList<QWizard::WizardButton> layout;
layout << QWizard::Stretch << QWizard::BackButton << QWizard::CancelButton
<< QWizard::NextButton << QWizard::FinishButton;
setButtonLayout(layout);
//...
}Voir également setButton(), setButtonText() et setOptions().
void QWizard::setButtonText(QWizard::WizardButton which, const QString &text)
Définit le texte du bouton « which » sur « text ».
Par défaut, le texte des boutons dépend de l'wizardStyle. Par exemple, sous macOS, le bouton « Next » s'appelle « Continue ».
Pour ajouter des boutons supplémentaires à l’assistant (par exemple, un bouton « Print »), une solution consiste à appeler la méthode setButtonText() avec les paramètres « CustomButton1 », « CustomButton2 » ou « CustomButton3 » pour définir leur texte, puis à rendre les boutons visibles à l’aide des options « HaveCustomButton1 », « HaveCustomButton2 » et/ou « HaveCustomButton3 ».
Le texte des boutons peut également être défini page par page à l'aide de la fonction QWizardPage::setButtonText().
Voir également buttonText(), setButton(), button(), setButtonLayout(), setOptions() et QWizardPage::setButtonText().
[slot] void QWizard::setCurrentId(int id)
Définit currentId sur id, sans passer par les pages situées entre currentId et id.
Renvoie le résultat sans changement de page, si
- l'assistant ne contient aucune page
- la page actuelle n'est pas valide
- la page fournie est égale à currentId()
- la page fournie est hors de la plage autorisée
Remarque : si des pages ont été sautées et que id est égal à 0, l'historique de navigation sera supprimé
Remarque : fonctionde définition de la propriété currentId.
Voir aussi currentId().
void QWizard::setDefaultProperty(const char *className, const char *property, const char *changedSignal)
Définit la propriété par défaut de ` className ` sur ` property` et le signal de modification associé sur ` changedSignal`.
La propriété par défaut est utilisée lorsqu’une instance de ` className ` (ou de l’une de ses sous-classes) est transmise à ` QWizardPage::registerField()` et qu’aucune propriété n’est spécifiée.
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 ` ni 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() |
Voir aussi QWizardPage::registerField().
void QWizard::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.
Voir également QWizardPage::registerField(), QWizardPage::setField() et field().
void QWizard::setOption(QWizard::WizardOption option, bool on = true)
Active l'option spécifiée si on est vrai ; dans le cas contraire, désactive l'option spécifiée.
Voir également options, testOption() et setWizardStyle().
void QWizard::setPage(int id, QWizardPage *page)
Ajoute l'page on indiquée à l'assistant avec l'id on indiquée.
Remarque : l'ajout d'une page peut modifier la valeur de la propriété ` startId ` si celle-ci n'a pas été définie explicitement.
Voir également addPage(), page() et pageAdded().
void QWizard::setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap)
Définit la carte de pixels pour le rôle « which » sur « pixmap ».
Les images pixmap sont utilisées par la fonction ` QWizard ` lors de l'affichage d'une page. Les images pixmap effectivement utilisées dépendent de la valeur de ` wizard style`.
Les images pixmap peuvent également être définies pour une page spécifique à l’aide de la fonction ` QWizardPage::setPixmap()`.
Voir également pixmap(), QWizardPage::setPixmap() et Elements of a Wizard Page.
void QWizard::setSideWidget(QWidget *widget)
Définit l'widget on fournie comme élément à afficher sur le côté gauche de l'assistant. Pour les styles utilisant l'WatermarkPixmap (ClassicStyle et ModernStyle), le widget latéral s'affiche par-dessus le filigrane ; pour les autres styles ou lorsque le filigrane n'est pas fourni, le widget latéral s'affiche sur le côté gauche de l'assistant.
Si l’on transmet nullptr, aucun widget latéral n’est affiché.
Lorsque l'widget n'est pas de type nullptr, l'assistant le réaffecte à un parent.
Tout widget latéral précédent est masqué.
Vous pouvez appeler setSideWidget() avec le même widget à différents moments.
Tous les widgets définis ici seront supprimés par l'assistant lors de sa destruction, à moins que vous ne redéfinissiez séparément le parent du widget après avoir défini un autre widget latéral (ou ` nullptr`).
Par défaut, aucun widget latéral n’est présent.
Voir également sideWidget().
[override virtual] void QWizard::setVisible(bool visible)
Réimplémente : QDialog::setVisible(bool visible).
QWidget *QWizard::sideWidget() const
Renvoie le widget situé à gauche de l'assistant ou de l'nullptr.
Par défaut, aucun widget latéral n'est présent.
Voir également setSideWidget().
[override virtual] QSize QWizard::sizeHint() const
Réimplémente : QDialog::sizeHint() const.
bool QWizard::testOption(QWizard::WizardOption option) const
Renvoie « true » si l'option on indiquée est activée ; sinon, renvoie « false ».
Voir également options, setOption() et setWizardStyle().
[virtual] bool QWizard::validateCurrentPage()
Cette fonction virtuelle est appelée par ` QWizard ` 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 appelle la méthode ` QWizardPage::validatePage()` depuis la méthode ` currentPage()`.
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 ` QWizardPage::isComplete()`) plutôt que de réimplémenter `validateCurrentPage()`.
Voir également QWizardPage::validatePage() et currentPage().
QList<int> QWizard::visitedIds() const
Renvoie la liste des identifiants des pages consultées, dans l'ordre dans lequel elles ont été consultées.
Voir également 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.







