Sur cette page

QWizard Class

La classe QWizard fournit un cadre pour les assistants. Plus d'informations...

En-tête : #include <QWizard>
CMake : find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake : QT += widgets
Héritages : 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

Emplacements 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 spécial de dialogue de saisie qui consiste en une séquence de pages. L'objectif d'un assistant est de guider l'utilisateur tout au long d'un processus, étape par étape. Les assistants sont utiles pour les tâches complexes ou peu fréquentes que les utilisateurs peuvent trouver difficiles à apprendre.

QWizard hérite de QDialog et représente un assistant. Chaque page est un QWizardPage (une sous-classe de QWidget ). Pour créer vos propres assistants, vous pouvez utiliser ces classes directement ou les sous-classer pour plus de contrôle.

Un exemple trivial

L'exemple suivant montre comment créer des pages d'assistant et les ajouter à un assistant. Pour des exemples plus avancés, voir 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);

#ifndef QT_NO_TRANSLATION
    QString translatorFileName = QLatin1String("qtbase_");
    translatorFileName += QLocale::system().name();
    QTranslator *translator = new QTranslator(&app);
    if (translator->load(translatorFileName, QLibraryInfo::path(QLibraryInfo::TranslationsPath)))
        app.installTranslator(translator);
#endif

    QWizard wizard;
    wizard.addPage(createIntroPage());
    wizard.addPage(createRegistrationPage());
    wizard.addPage(createConclusionPage());

    wizard.setWindowTitle("Trivial Wizard");
    wizard.show();

    return app.exec();
}

Présentation de l'assistant

QWizard prend en charge quatre aspects de l'assistant :

Vous pouvez définir explicitement l'apparence à utiliser en utilisant setWizardStyle() (par exemple, si vous voulez la même apparence sur toutes les plates-formes).

Remarque : AeroStyle n'a d'effet que sur un système Windows Vista dont la composition alpha est activée. ModernStyle est utilisé comme solution de repli lorsque cette condition n'est pas remplie.

Outre le style de l'assistant, plusieurs options permettent de contrôler l'aspect et la convivialité de l'assistant. Elles peuvent être définies à l'aide de setOption() ou setOptions(). Par exemple, HaveHelpButton permet à QWizard d'afficher un bouton Help avec les autres boutons de l'assistant.

Vous pouvez même modifier l'ordre des boutons de l'assistant en utilisant 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, et en activant les options HaveCustomButton1, HaveCustomButton2, ou HaveCustomButton3. Chaque fois que l'utilisateur clique sur un bouton personnalisé, customButtonClicked() est émis. 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 sont constitués d'une séquence de pages QWizardPage. À tout moment, une seule page est affichée. Une page possède les attributs suivants :

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

Attributs sur une page d'assistant

Lorsqu'un attribut subTitle est défini, QWizard l'affiche dans un en-tête, auquel cas il utilise également les attributs BannerPixmap et LogoPixmap pour décorer l'en-tête. L'adresse WatermarkPixmap est affichée sur le côté 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 règle générale, 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 est radicalement différente :

Attributs d'une page d'assistant utilisant MacStyle

Les pixmaps du filigrane, de la bannière et du logo sont ignorés par MacStyle. Si BackgroundPixmap est défini, il est utilisé comme arrière-plan pour l'assistant ; sinon, une image "assistant" par défaut est utilisée.

Le titre et le sous-titre sont définis en appelant QWizardPage::setTitle() et QWizardPage::setSubTitle() sur les pages individuelles. Il peut s'agir de texte simple ou de HTML (voir titleFormat et subTitleFormat). Les images peuvent être définies globalement pour l'ensemble de l'assistant à l'aide de setPixmap(), ou par page à l'aide de QWizardPage::setPixmap().

Enregistrement et utilisation des champs

Dans de nombreux assistants, le contenu d'une page peut affecter les valeurs par défaut des champs d'une page ultérieure. Pour faciliter la communication entre les pages, QWizard prend en charge un mécanisme de "champ" qui vous permet d'enregistrer un champ (par exemple, un QLineEdit) sur une page et d'accéder à sa valeur à partir de n'importe quelle page. Il est également possible de spécifier des champs obligatoires (c'est-à-dire des champs qui doivent être remplis avant que l'utilisateur puisse passer à la page suivante).

Pour enregistrer un champ, appelez QWizardPage::registerField() champ. 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 un champ obligatoire.

Les champs d'une page sont accessibles à partir de n'importe quelle autre page. Par exemple, les champs de n'importe quelle page sont accessibles à partir de n'importe quelle autre page :

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'utiliser pour initialiser ConclusionPage. Le contenu du champ est renvoyé sous forme de QVariant.

Lorsque nous créons un champ à l'aide de QWizardPage::registerField(), nous transmettons un nom de champ unique et un widget. Nous pouvons également fournir un nom de propriété Qt et un signal "changed" (un signal qui est émis lorsque la propriété change) comme troisième et quatrième arguments ; cependant, cela n'est pas nécessaire pour les widgets Qt 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é, il s'agit d'un champ 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 remplis.

Pour considérer qu'un champ est "rempli", QWizard vérifie simplement que la valeur actuelle du champ n'est pas égale à la valeur d'origine (la valeur qu'il avait lorsque initializePage() a été appelé). Pour les sous-classes QLineEdit et QAbstractSpinBox, QWizard vérifie également que hasAcceptableInput() renvoie true, afin d'honorer tout validateur ou masque.

Le mécanisme de champs obligatoires de QWizard est fourni pour des raisons de commodité. Une alternative plus puissante (mais aussi plus lourde) consiste à réimplémenter 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 est une façon d'effectuer la validation de l'entrée de l'utilisateur. Une autre façon consiste à réimplémenter 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 est affichée (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, avec la page 1 suivie de la page 2 et ainsi de suite jusqu'à la dernière page. L'exemple de l'assistant Trivial est un assistant de ce type. Avec QWizard, les assistants linéaires sont créés en instanciant les QWizardPages et en les insérant à l'aide de addPage(). Par défaut, les pages sont affichées 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 des 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 example above).

Si l'utilisateur appuie sur Back, cleanupPage() est appelé (qui appelle à son tour QWizardPage::cleanupPage()). L'implémentation par défaut réinitialise les champs de la page à leurs valeurs d'origine (les valeurs 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 vous suffit d'activer l'option IndependentPages.

Création d'assistants non linéaires

Certains assistants sont plus complexes en ce sens qu'ils permettent différents parcours en fonction des informations fournies par l'utilisateur. L'exemple de l'assistant de licence en est l'illustration. Il propose plusieurs pages d'assistant ; en fonction des options sélectionnées, l'utilisateur peut accéder à différentes pages.

Organigramme d'une page d'assistant complexe

Dans les assistants complexes, les pages sont identifiées par des ID. Ces identifiants sont généralement définis à l'aide d'une énumération. Par exemple, les pages sont insérées à l'aide de (

class LicenseWizard : public QWizard
{
    ...
    enum { Page_Intro, Page_Evaluate, Page_Register, Page_Details,
           Page_Conclusion };
    ...
};

Les pages sont insérées à l'aide de setPage(), qui prend un ID 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 sont affichées dans l'ordre croissant des ID. Pour fournir un ordre dynamique qui dépend des options choisies par l'utilisateur, nous devons réimplémenter 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 à 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 : pour tester si une page a été visitée, appelez () :

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, Trivial Wizard Example, et License Wizard Example.

Documentation sur les types de membres

enum QWizard::WizardButton

Cette énumération spécifie les boutons d'un assistant.

ConstanteValeurDescription
QWizard::BackButton0Le bouton Back (Go Back sur macOS)
QWizard::NextButton1Le bouton Next (Continue sur macOS)
QWizard::CommitButton2Le bouton Commit
QWizard::FinishButton3Le bouton Finish (Done sur 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 aussi 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 à setButtonLayout() :

ConstanteValeurDescription
QWizard::Stretch9Un étirement horizontal dans la disposition du bouton

Voir également setButton(), setButtonText(), setButtonLayout() et customButtonClicked().

enum QWizard::WizardOption
flags QWizard::WizardOptions

Cette énumération spécifie diverses options qui affectent l'aspect et la convivialité d'un assistant.

ConstanteValeurDescription de l'option
QWizard::IndependentPages0x00000001Les pages sont indépendantes les unes des autres (c'est-à-dire qu'elles ne dérivent pas de valeurs les unes des autres).
QWizard::IgnoreSubTitles0x00000002Ne pas afficher les sous-titres, même s'ils sont définis.
QWizard::ExtendedWatermarkPixmap0x00000004Étendre toute WatermarkPixmap jusqu'au bord de la fenêtre.
QWizard::NoDefaultButton0x00000008Ne faites pas du bouton Next ou Finish le default button de la boîte de dialogue.
QWizard::NoBackButtonOnStartPage0x00000010N'affichez pas le bouton Back sur la page d'accueil.
QWizard::NoBackButtonOnLastPage0x00000020N'affichez pas le bouton Back sur la dernière page.
QWizard::DisabledBackButtonOnLastPage0x00000040Désactiver le bouton Back sur la dernière page.
QWizard::HaveNextButtonOnLastPage0x00000080Afficher le bouton (désactivé) Next sur la dernière page.
QWizard::HaveFinishButtonOnEarlyPages0x00000100Afficher le bouton Finish (désactivé) sur les pages non finales.
QWizard::NoCancelButton0x00000200Ne pas afficher le bouton Cancel.
QWizard::CancelButtonOnLeft0x00000400Placez le bouton Cancel à gauche de Back (plutôt qu'à droite de Finish ou Next).
QWizard::HaveHelpButton0x00000800Affichez 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::HaveCustomButton10x00002000Affichez le premier bouton défini par l'utilisateur (CustomButton1).
QWizard::HaveCustomButton20x00004000Affichez le deuxième bouton défini par l'utilisateur (CustomButton2).
QWizard::HaveCustomButton30x00008000Affichez le troisième bouton défini par l'utilisateur (CustomButton3).
QWizard::NoCancelButtonOnLastPage0x00010000N'affichez pas le bouton Cancel sur la dernière page.
QWizard::StretchBanner0x00020000S'il y a une page banner, elle s'étend sur toute la largeur de l'assistant.

Le type WizardOptions est un typedef pour QFlags<WizardOption>. Il stocke une combinaison OU de valeurs WizardOption.

Voir également setOptions(), setOption() et testOption().

enum QWizard::WizardPixmap

Cette énumération spécifie les images pixellisées qui peuvent être associées à une page.

ConstanteValeurDescription
QWizard::WatermarkPixmap0La grande pixmap sur le côté gauche d'une page ClassicStyle ou ModernStyle
QWizard::LogoPixmap1La petite pixmap du côté droit de l'en-tête d'une page ClassicStyle ou ModernStyle
QWizard::BannerPixmap2La pixmap qui occupe l'arrière-plan de l'en-tête d'une page ModernStyle
QWizard::BackgroundPixmap3La pixmap qui occupe l'arrière-plan d'un assistant MacStyle

Voir aussi setPixmap(), QWizardPage::setPixmap(), et Elements of a Wizard Page.

enum QWizard::WizardStyle

Cette énumération spécifie les différents aspects pris en charge par QWizard.

ConstanteValeurDescription de l'aspect
QWizard::ClassicStyle0Aspect Windows classique
QWizard::ModernStyle1Apparence Windows moderne
QWizard::MacStyle2aspect macOS
QWizard::AeroStyle3Apparence 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 une valeur de -1, ce qui indique qu'aucune page n'est actuellement affichée.

Fonctions d'accès :

int currentId() const
void setCurrentId(int id)

Signal du notificateur :

void currentIdChanged(int id)

Voir aussi currentPage().

options : WizardOptions

Cette propriété contient les différentes options qui affectent l'aspect et la convivialité de l'assistant

Par défaut, les options suivantes sont définies (en fonction de la plate-forme) :

Fonctions d'accès :

QWizard::WizardOptions options() const
void setOptions(QWizard::WizardOptions options)

Voir aussi wizardStyle.

startId : int

Cette propriété contient l'ID de la première page

Si cette propriété n'est pas explicitement définie, elle prend par défaut l'ID de la page la plus basse de l'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 aussi 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é définit 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'aspect et la convivialité de l'assistant

Par défaut, QWizard utilise AeroStyle sur un système Windows Vista avec la composition alpha activée, quel que soit le style du widget actuel. Si ce n'est pas le cas, le style par défaut de l'assistant dépend du style du widget actuel comme suit : MacStyle est le style par défaut si le style du widget actuel est QMacStyle, ModernStyle est le style par défaut si le style du widget actuel 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())

Construit un assistant avec les données parent et la fenêtre flags.

Voir aussi parent() et windowFlags().

[virtual noexcept] QWizard::~QWizard()

Détruit l'assistant et ses pages, en libérant toutes les ressources allouées.

int QWizard::addPage(QWizardPage *page)

Ajoute la page page à l'assistant et renvoie l'ID de la page.

Il est garanti que l'ID est plus grand que n'importe quel autre ID dans le site QWizard jusqu'à présent.

Voir aussi setPage(), page(), et pageAdded().

[slot] void QWizard::back()

Retourne à la page précédente.

Cela équivaut à appuyer sur le bouton Back.

Voir aussi next(), accept(), reject() et restart().

QAbstractButton *QWizard::button(QWizard::WizardButton which) const

Renvoie le bouton correspondant au rôle which.

Voir aussi setButton() et setButtonText().

QString QWizard::buttonText(QWizard::WizardButton which) const

Renvoie le texte du bouton which.

Si un texte a été défini à l'aide de setButtonText(), ce texte est renvoyé.

Par défaut, le texte des boutons dépend du bouton wizardStyle. Par exemple, sous macOS, le bouton Next est appelé 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 nettoyer la page id juste avant que l'utilisateur ne la quitte en cliquant sur Back (sauf si l'option QWizard::IndependentPages est activée).

L'implémentation par défaut appelle QWizardPage::cleanupPage() sur la page(id).

Voir aussi QWizardPage::cleanupPage() et initializePage().

[signal] void QWizard::currentIdChanged(int id)

Ce signal est émis lorsque la page en cours change, avec la nouvelle page en cours id.

Note : Signal de notification pour la propriété currentId.

Voir également currentId() et currentPage().

QWizardPage *QWizard::currentPage() const

Renvoie un pointeur sur la page en cours, ou nullptr s'il n'y a pas de page en cours (par exemple, avant l'affichage de l'assistant).

Cela équivaut à appeler page(currentId()).

Voir aussi page(), currentId(), et restart().

[signal] void QWizard::customButtonClicked(int which)

Ce signal est émis lorsque l'utilisateur clique sur un bouton personnalisé. which peut être CustomButton1, CustomButton2, ou CustomButton3.

Par défaut, aucun bouton personnalisé n'est affiché. Appelez setOption() avec HaveCustomButton1, HaveCustomButton2, ou HaveCustomButton3 pour en avoir un, et utilisez setButtonText() ou setButton() pour le configurer.

Voir aussi 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 appelé name.

Cette fonction peut être utilisée pour 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 la page id; sinon, renvoie false.

L'appui sur Back marque à nouveau la page actuelle 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 setOption(HaveHelpButton, true) pour en avoir 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 la page id juste avant qu'elle ne soit affichée, soit à la suite de l'appel de QWizard::restart(), soit à la suite d'un clic de l'utilisateur sur Next(toutefois, si l'option QWizard::IndependentPages est activée, cette fonction n'est appelée que la première fois que la page est affichée).

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 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 équivaut à appuyer 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 pour savoir quelle page afficher lorsque l'utilisateur clique sur le bouton Next.

La valeur de retour est l'ID de la page suivante, ou -1 si aucune page ne suit.

L'implémentation par défaut appelle QWizardPage::nextId() sur currentPage().

En réimplémentant cette fonction, vous pouvez spécifier un ordre dynamique des pages.

Voir aussi QWizardPage::nextId() et currentPage().

QWizardPage *QWizard::page(int id) const

Renvoie la page avec l'adresse id, ou nullptr s'il n'y en a pas.

Voir aussi addPage() et setPage().

[signal] void QWizard::pageAdded(int id)

Ce signal est émis lorsqu'une page est ajoutée à l'assistant. L'adresse id de la page est passée en paramètre.

Voir aussi 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 lorsqu'une page est supprimée de l'assistant. L'adresse id de la page est passée en 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 pixmap définie pour le rôle which.

Par défaut, la seule pixmap définie est la BackgroundPixmap sur macOS.

Voir aussi setPixmap(), QWizardPage::pixmap(), et Elements of a Wizard Page.

void QWizard::removePage(int id)

Supprime la page correspondant à la propriété id. cleanupPage() sera appelé si nécessaire.

Remarque : la suppression d'une page peut influencer 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()

Redémarre l'assistant à la page d'accueil. Cette fonction est appelée automatiquement lorsque l'assistant est affiché.

Voir aussi startId().

void QWizard::setButton(QWizard::WizardButton which, QAbstractButton *button)

Définit le bouton correspondant au rôle which à button.

Pour ajouter des boutons supplémentaires à l'assistant (par exemple, un bouton Print ), il est possible d'appeler setButton() avec CustomButton1 à CustomButton3, et de rendre les boutons visibles à l'aide des options HaveCustomButton1 à 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 de WizardButton.

La présentation 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é de la disposition des boutons que celui déjà fourni par options.

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 comme étant text.

Par défaut, le texte des boutons dépend de wizardStyle. Par exemple, sur macOS, le bouton Next est appelé Continue.

Pour ajouter des boutons supplémentaires à l'assistant (par exemple, un bouton Print ), il est possible d'appeler setButtonText() avec CustomButton1, CustomButton2, ou CustomButton3 pour définir leur texte, et de rendre les boutons visibles à l'aide des options HaveCustomButton1, HaveCustomButton2, et/ou HaveCustomButton3.

Le texte des boutons peut également être défini par page à l'aide de QWizardPage::setButtonText().

Voir également buttonText(), setButton(), button(), setButtonLayout(), setOptions() et QWizardPage::setButtonText().

[slot] void QWizard::setCurrentId(int id)

Définit currentId à id, sans visiter les pages entre currentId et id.

Retourne sans changement de page, si

  • l'assistant ne contient aucune page
  • la page actuelle n'est pas valide
  • la page donnée est égale à currentId()
  • la page donnée est hors de portée

Remarque : si des pages ont été sautées et que id est égal à 0, l'historique des pages visitées sera supprimé.

Remarque : fonction de 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 comme étant property, et le signal de changement associé comme étant 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 connaît les widgets Qt Widgets les plus courants. Pour ceux-ci (ou leurs sous-classes), vous n'avez pas besoin de spécifier une propriété property ou 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 appelé name à 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)

Définit l'option option comme étant activée si on est vrai ; sinon, efface l'option option.

Voir aussi options, testOption(), et setWizardStyle().

void QWizard::setPage(int id, QWizardPage *page)

Ajoute la page page à l'assistant avec la page id.

Remarque : l 'ajout d'une page peut influencer la valeur de la propriété startId si elle n'a pas été définie explicitement.

Voir aussi addPage(), page() et pageAdded().

void QWizard::setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap)

Définit la pixmap pour le rôle which à pixmap.

Les pixmaps sont utilisés par QWizard lors de l'affichage d'une page. Les pixmaps réellement utilisés dépendent de la page wizard style.

Les pixmaps peuvent également être définies pour une page spécifique à l'aide de QWizardPage::setPixmap().

Voir également pixmap(), QWizardPage::setPixmap() et Elements of a Wizard Page.

void QWizard::setSideWidget(QWidget *widget)

Définit le site widget comme étant affiché sur le côté gauche de l'assistant. Pour les styles qui utilisent WatermarkPixmap (ClassicStyle et ModernStyle), le widget latéral est affiché au-dessus du filigrane, pour les autres styles ou lorsque le filigrane n'est pas fourni, le widget latéral est affiché sur le côté gauche de l'assistant.

Si vous passez nullptr, aucun widget latéral n'est affiché.

Lorsque widget n'est pas nullptr, l'assistant le reporte.

Tout widget latéral précédent est masqué.

Vous pouvez appeler setSideWidget() avec le même widget à plusieurs reprises.

Tous les widgets définis ici seront supprimés par l'assistant lorsqu'il sera détruit, à moins que vous ne répartissiez séparément le 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 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 le site option est activé ; sinon, renvoie false.

Voir aussi options, setOption(), et setWizardStyle().

[virtual] bool QWizard::validateCurrentPage()

Cette fonction virtuelle est appelée par QWizard lorsque l'utilisateur clique sur Next ou Finish pour effectuer une validation de dernière minute. Si elle renvoie true, la page suivante est affichée (ou l'assistant se termine) ; sinon, la page actuelle reste affichée.

L'implémentation par défaut appelle QWizardPage::validatePage() sur currentPage().

Lorsque cela est 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 ID des pages visitées, dans l'ordre dans lequel les pages ont été visitées.

Voir aussi 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.