Sur cette page

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 :

Le schéma ci-dessous montre comment QWizard affiche ces attributs, en supposant qu'ils soient tous présents et que ModernStyle soit utilisé :

Attributs d'une page d'assistant

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 :

Attributs d'une page d'assistant utilisant MacStyle

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.

Organigramme de la page de l'assistant complexe

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.

ConstanteValeurDescription
QWizard::BackButton0Le bouton « Back » (Go Back sous macOS)
QWizard::NextButton1Le bouton « Next » (Continue sous macOS)
QWizard::CommitButton2Le bouton « Commit »
QWizard::FinishButton3Le bouton « Finish » (Done sous macOS)
QWizard::CancelButton4Le bouton « Cancel » (voir aussi NoCancelButton)
QWizard::HelpButton5Le bouton « Help » (voir aussi HaveHelpButton)
QWizard::CustomButton16Le premier bouton défini par l'utilisateur (voir aussi HaveCustomButton1)
QWizard::CustomButton27Le deuxième bouton défini par l'utilisateur (voir également HaveCustomButton2)
QWizard::CustomButton38Le 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() :

ConstanteValeurDescription
QWizard::Stretch9Un é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.

ConstanteValeurDescription
QWizard::IndependentPages0x00000001Les pages sont indépendantes les unes des autres (c'est-à-dire qu'elles ne dérivent pas leurs valeurs les unes des autres).
QWizard::IgnoreSubTitles0x00000002Ne pas afficher de sous-titres, même s'ils sont définis.
QWizard::ExtendedWatermarkPixmap0x00000004Étendre toute la zone « WatermarkPixmap » jusqu'au bord de la fenêtre.
QWizard::NoDefaultButton0x00000008Ne pas faire du bouton « Next » ou « Finish » l'default button de la boîte de dialogue.
QWizard::NoBackButtonOnStartPage0x00000010Ne pas afficher le bouton « Back » sur la page d’accueil.
QWizard::NoBackButtonOnLastPage0x00000020Ne pas afficher le bouton « Back » sur la dernière page.
QWizard::DisabledBackButtonOnLastPage0x00000040Désactiver le bouton « Back » sur la dernière page.
QWizard::HaveNextButtonOnLastPage0x00000080Afficher le bouton « Next » (désactivé) sur la dernière page.
QWizard::HaveFinishButtonOnEarlyPages0x00000100Afficher le bouton « Finish » (désactivé) sur les pages autres que la dernière.
QWizard::NoCancelButton0x00000200Ne pas afficher le bouton « Cancel ».
QWizard::CancelButtonOnLeft0x00000400Placer le bouton « Cancel » à gauche de Back (plutôt qu’à droite de Finish ou Next).
QWizard::HaveHelpButton0x00000800Afficher le bouton « Help ».
QWizard::HelpButtonOnRight0x00001000Placez le bouton « Help » à l’extrême droite de la disposition des boutons (plutôt qu’à l’extrême gauche).
QWizard::HaveCustomButton10x00002000Afficher le premier bouton défini par l’utilisateur (CustomButton1).
QWizard::HaveCustomButton20x00004000Afficher le deuxième bouton défini par l'utilisateur (CustomButton2).
QWizard::HaveCustomButton30x00008000Afficher le troisième bouton défini par l’utilisateur (CustomButton3).
QWizard::NoCancelButtonOnLastPage0x00010000Ne pas afficher le bouton « Cancel » sur la dernière page.
QWizard::StretchBanner0x00020000S'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.

ConstanteValeurDescription
QWizard::WatermarkPixmap0La carte de pixels haute située à gauche d'une page ClassicStyle ou ModernStyle
QWizard::LogoPixmap1La petite image située à droite de l'en-tête d'une page ClassicStyle ou ModernStyle
QWizard::BannerPixmap2L'image qui occupe l'arrière-plan de l'en-tête d'une page ModernStyle
QWizard::BackgroundPixmap3L'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.

ConstanteValeurDescription
QWizard::ClassicStyle0Apparence Windows classique
QWizard::ModernStyle1Apparence Windows moderne
QWizard::MacStyle2Style macOS
QWizard::AeroStyle3Style 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) :

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 :

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.