QWizard Class

Die Klasse QWizard bietet einen Rahmen für Assistenten. Mehr...

Kopfzeile: #include <QWizard>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Vererbungen: QDialog

Öffentliche Typen

enum WizardButton { BackButton, NextButton, CommitButton, FinishButton, CancelButton, …, Stretch }
enum WizardOption { IndependentPages, IgnoreSubTitles, ExtendedWatermarkPixmap, NoDefaultButton, NoBackButtonOnStartPage, …, NoCancelButtonOnLastPage }
flags WizardOptions
enum WizardPixmap { WatermarkPixmap, LogoPixmap, BannerPixmap, BackgroundPixmap }
enum WizardStyle { ClassicStyle, ModernStyle, MacStyle, AeroStyle }

Eigenschaften

Öffentliche Funktionen

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

Reimplementierte öffentliche Funktionen

virtual void setVisible(bool visible) override
virtual QSize sizeHint() const override

Öffentliche Slots

void back()
void next()
void restart()
void setCurrentId(int id)

Signale

void currentIdChanged(int id)
void customButtonClicked(int which)
void helpRequested()
void pageAdded(int id)
void pageRemoved(int id)

Geschützte Funktionen

virtual void cleanupPage(int id)
virtual void initializePage(int id)

Reimplementierte geschützte Funktionen

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

Detaillierte Beschreibung

Ein Wizard (unter macOS auch Assistent genannt) ist ein spezieller Typ eines Eingabedialogs, der aus einer Folge von Seiten besteht. Der Zweck eines Assistenten ist es, den Benutzer Schritt für Schritt durch einen Prozess zu führen. Assistenten sind nützlich für komplexe oder seltene Aufgaben, die für den Benutzer schwer zu erlernen sind.

QWizard erbt QDialog und stellt einen Assistenten dar. Jede Seite ist eine QWizardPage (eine QWidget Unterklasse). Um Ihre eigenen Assistenten zu erstellen, können Sie diese Klassen direkt verwenden, oder Sie können sie unterklassifizieren, um mehr Kontrolle zu haben.

Ein triviales Beispiel

Das folgende Beispiel zeigt, wie Sie Assistentenseiten erstellen und zu einem Assistenten hinzufügen können. Fortgeschrittenere Beispiele finden Sie unter Lizenz-Assistent.

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();
}

Aussehen und Bedienung des Assistenten

QWizard unterstützt vier Wizard-Looks:

Sie können das zu verwendende Aussehen explizit mit setWizardStyle() festlegen (z.B. wenn Sie auf allen Plattformen das gleiche Aussehen wünschen).

Hinweis: AeroStyle ist nur auf einem Windows Vista-System mit aktiviertem Alpha-Compositing wirksam. ModernStyle wird als Fallback verwendet, wenn diese Bedingung nicht erfüllt ist.

Zusätzlich zum Stil des Assistenten gibt es mehrere Optionen, die das Aussehen des Assistenten steuern. Diese können mit setOption() oder setOptions() eingestellt werden. Zum Beispiel bewirkt HaveHelpButton, dass QWizard eine Schaltfläche Help zusammen mit den anderen Schaltflächen des Assistenten anzeigt.

Sie können sogar die Reihenfolge der Schaltflächen des Assistenten mit setButtonLayout() in eine beliebige Reihenfolge bringen, und Sie können bis zu drei benutzerdefinierte Schaltflächen (z. B. eine Print -Schaltfläche) zu der Schaltflächenreihe hinzufügen. Dies wird erreicht, indem Sie setButton() oder setButtonText() mit CustomButton1, CustomButton2 oder CustomButton3 aufrufen, um die Schaltfläche einzurichten, und indem Sie die Optionen HaveCustomButton1, HaveCustomButton2 oder HaveCustomButton3 aktivieren. Jedes Mal, wenn der Benutzer auf eine benutzerdefinierte Schaltfläche klickt, wird customButtonClicked() ausgegeben. Zum Beispiel:

        wizard()->setButtonText(QWizard::CustomButton1, tr("&Print"));
        wizard()->setOption(QWizard::HaveCustomButton1, true);
        connect(wizard(), &QWizard::customButtonClicked,
                this, &ConclusionPage::printButtonClicked);

Elemente einer Assistentenseite

Assistenten bestehen aus einer Folge von QWizardPages. Es wird immer nur eine Seite angezeigt. Eine Seite hat die folgenden Eigenschaften:

Das folgende Diagramm zeigt, wie QWizard diese Attribute rendert, vorausgesetzt, sie sind alle vorhanden und ModernStyle wird verwendet:

Wenn ein subTitle gesetzt ist, zeigt QWizard es in einer Kopfzeile an. In diesem Fall werden auch BannerPixmap und LogoPixmap verwendet, um die Kopfzeile zu schmücken. Die WatermarkPixmap wird auf der linken Seite, unterhalb der Kopfzeile, angezeigt. Am unteren Rand befindet sich eine Reihe von Schaltflächen, mit denen der Benutzer durch die Seiten navigieren kann.

Die Seite selbst (das QWizardPage Widget) nimmt den Bereich zwischen der Kopfzeile, dem Wasserzeichen und der Schaltflächenreihe ein. In der Regel handelt es sich bei der Seite um ein QWizardPage, auf dem ein QGridLayout installiert ist, mit den üblichen untergeordneten Widgets (QLabels, QLineEdits, usw.).

Wenn der Stil des Assistenten MacStyle ist, sieht die Seite völlig anders aus:

Die Pixmaps für Wasserzeichen, Banner und Logo werden von MacStyle ignoriert. Wenn BackgroundPixmap eingestellt ist, wird es als Hintergrund für den Assistenten verwendet; andernfalls wird ein standardmäßiges "Assistenten"-Bild verwendet.

Der Titel und der Untertitel werden durch die Aufrufe QWizardPage::setTitle() und QWizardPage::setSubTitle() auf den einzelnen Seiten festgelegt. Sie können aus einfachem Text oder HTML bestehen (siehe titleFormat und subTitleFormat). Die Pixmaps können mit setPixmap() global für den gesamten Assistenten oder mit QWizardPage::setPixmap() für jede Seite einzeln festgelegt werden.

Registrieren und Verwenden von Feldern

In vielen Assistenten kann der Inhalt einer Seite die Standardwerte der Felder einer späteren Seite beeinflussen. Um die Kommunikation zwischen Seiten zu erleichtern, unterstützt QWizard einen "Feld"-Mechanismus, der es ermöglicht, ein Feld (z.B. QLineEdit) auf einer Seite zu registrieren und von jeder Seite aus auf seinen Wert zuzugreifen. Es ist auch möglich, Pflichtfelder anzugeben (d.h. Felder, die ausgefüllt werden müssen, bevor der Benutzer zur nächsten Seite wechseln kann).

Um ein Feld zu registrieren, rufen Sie QWizardPage::registerField() field auf. Zum Beispiel:

    registerField("evaluate.name*", nameLineEdit);
    registerField("evaluate.email*", emailLineEdit);

Der obige Code registriert drei Felder, className, baseClass und qobjectMacro, die mit drei untergeordneten Widgets verbunden sind. Das Sternchen (*) neben className kennzeichnet ein Pflichtfeld.

Die Felder jeder Seite sind von jeder anderen Seite aus zugänglich. Ein Beispiel:

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);
}

Hier rufen wir QWizardPage::field() auf, um auf den Inhalt des Feldes details.email (das in DetailsPage definiert wurde) zuzugreifen und es zur Initialisierung von ConclusionPage zu verwenden. Der Inhalt des Feldes wird als QVariant zurückgegeben.

Wenn wir ein Feld mit QWizardPage::registerField() erstellen, übergeben wir einen eindeutigen Feldnamen und ein Widget. Wir können auch einen Qt-Eigenschaftsnamen und ein "changed"-Signal (ein Signal, das ausgegeben wird, wenn sich die Eigenschaft ändert) als drittes und viertes Argument angeben; dies ist jedoch für die gebräuchlichsten Qt Widgets wie QLineEdit, QCheckBox und QComboBox nicht notwendig, da QWizard weiß, nach welchen Eigenschaften zu suchen ist.

Wenn bei der Registrierung der Eigenschaft ein Sternchen (*) an den Namen angehängt wird, ist das Feld ein Pflichtfeld. Wenn eine Seite Pflichtfelder hat, werden die Schaltflächen Next und/oder Finish nur aktiviert, wenn alle Pflichtfelder ausgefüllt sind.

Um ein Feld als "ausgefüllt" zu betrachten, prüft QWizard einfach, ob der aktuelle Wert des Feldes nicht gleich dem ursprünglichen Wert ist (dem Wert, den es beim Aufruf von initializePage() hatte). Bei den Unterklassen QLineEdit und QAbstractSpinBox prüft QWizard außerdem, ob hasAcceptableInput() den Wert true zurückgibt, um eine Validierung oder Maske zu berücksichtigen.

Der Pflichtfeld-Mechanismus von QWizard dient der Bequemlichkeit. Eine leistungsfähigere (aber auch umständlichere) Alternative ist die Neuimplementierung von QWizardPage::isComplete() und die Ausgabe des Signals QWizardPage::completeChanged(), sobald die Seite vollständig oder unvollständig wird.

Der aktivierte/deaktivierte Zustand der Schaltflächen Next und/oder Finish ist eine Möglichkeit, die Benutzereingaben zu überprüfen. Eine andere Möglichkeit besteht darin, validateCurrentPage() (oder QWizardPage::validatePage()) neu zu implementieren, um eine Überprüfung in letzter Minute durchzuführen (und eine Fehlermeldung anzuzeigen, wenn der Benutzer unvollständige oder ungültige Informationen eingegeben hat). Wenn die Funktion true zurückgibt, wird die nächste Seite angezeigt (oder der Assistent wird beendet); andernfalls bleibt die aktuelle Seite bestehen.

Lineare Assistenten erstellen

Die meisten Assistenten sind linear aufgebaut, d. h. auf Seite 1 folgt Seite 2 und so weiter bis zur letzten Seite. Das Beispiel des Trivial Wizards ist ein solcher Assistent. Mit QWizard werden lineare Assistenten durch Instanziierung der QWizardPages und deren Einfügen mit addPage() erstellt. Standardmäßig werden die Seiten in der Reihenfolge angezeigt, in der sie eingefügt wurden. Ein Beispiel:

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

Wenn eine Seite angezeigt werden soll, ruft QWizard initializePage() auf (die wiederum QWizardPage::initializePage() aufruft), um die Seite mit Standardwerten zu füllen. Standardmäßig tut diese Funktion nichts, aber sie kann neu implementiert werden, um den Inhalt der Seite auf der Grundlage der Felder anderer Seiten zu initialisieren (siehe example above).

Wenn der Benutzer Back drückt, wird cleanupPage() aufgerufen (was wiederum QWizardPage::cleanupPage() aufruft). Die Standardimplementierung setzt die Felder der Seite auf ihre ursprünglichen Werte zurück (die Werte, die sie hatten, bevor initializePage() aufgerufen wurde). Wenn Sie möchten, dass die Schaltfläche Back nicht destruktiv ist und die vom Benutzer eingegebenen Werte beibehält, aktivieren Sie einfach die Option IndependentPages.

Nicht-lineare Assistenten erstellen

Einige Assistenten sind insofern komplexer, als sie auf der Grundlage der vom Benutzer bereitgestellten Informationen verschiedene Durchlaufpfade zulassen. Das Beispiel des Lizenzassistenten veranschaulicht dies. Es bietet mehrere Assistentenseiten; je nachdem, welche Optionen ausgewählt werden, kann der Benutzer verschiedene Seiten erreichen.

In komplexen Assistenten werden die Seiten durch IDs identifiziert. Diese IDs werden typischerweise über ein Enum definiert. Ein Beispiel:

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

Die Seiten werden mit setPage() eingefügt, das eine ID und eine Instanz von QWizardPage (oder einer Unterklasse) annimmt:

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);
    ...
}

Standardmäßig werden die Seiten in aufsteigender ID-Reihenfolge angezeigt. Um eine dynamische Reihenfolge zu erreichen, die von den vom Benutzer gewählten Optionen abhängt, müssen wir QWizardPage::nextId() neu implementieren. Ein Beispiel:

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;
}

Es wäre auch möglich, die gesamte Logik an einer Stelle in einer QWizard::nextId()-Reimplementierung unterzubringen. Ein Beispiel:

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;
    }
}

Um auf einer anderen Seite als der Seite mit der niedrigsten ID zu beginnen, rufen Sie setStartId() auf.

Um zu testen, ob eine Seite bereits besucht wurde oder nicht, rufen Sie hasVisitedPage() auf. Ein Beispiel:

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);
}

Siehe auch QWizardPage, Trivial Wizard Example und License Wizard Example.

Dokumentation der Mitgliedstypen

enum QWizard::WizardButton

Diese Aufzählung spezifiziert die Schaltflächen in einem Assistenten.

KonstanteWertBeschreibung
QWizard::BackButton0Die Schaltfläche Back (Go Back unter macOS)
QWizard::NextButton1Die Schaltfläche Next (Continue unter macOS)
QWizard::CommitButton2Die Schaltfläche Commit
QWizard::FinishButton3Die Schaltfläche Finish (Done unter macOS)
QWizard::CancelButton4Die Schaltfläche Cancel (siehe auch NoCancelButton)
QWizard::HelpButton5Die Schaltfläche Help (siehe auch HaveHelpButton)
QWizard::CustomButton16Die erste benutzerdefinierte Schaltfläche (siehe auch HaveCustomButton1)
QWizard::CustomButton27Die zweite benutzerdefinierte Schaltfläche (siehe auch HaveCustomButton2)
QWizard::CustomButton38Die dritte benutzerdefinierte Schaltfläche (siehe auch HaveCustomButton3)

Der folgende Wert ist nur beim Aufruf von setButtonLayout() nützlich:

KonstanteWertBeschreibung
QWizard::Stretch9Eine horizontale Ausdehnung im Schaltflächenlayout

Siehe auch setButton(), setButtonText(), setButtonLayout(), und customButtonClicked().

enum QWizard::WizardOption
flags QWizard::WizardOptions

Diese Aufzählung spezifiziert verschiedene Optionen, die das Aussehen eines Wizards beeinflussen.

KonstanteWertBeschreibung
QWizard::IndependentPages0x00000001Die Seiten sind unabhängig voneinander (d.h., sie leiten keine Werte voneinander ab).
QWizard::IgnoreSubTitles0x00000002Zeigt keine Untertitel an, auch wenn sie eingestellt sind.
QWizard::ExtendedWatermarkPixmap0x00000004Erweitern Sie WatermarkPixmap bis an den Rand des Fensters.
QWizard::NoDefaultButton0x00000008Machen Sie die Schaltfläche Next oder Finish nicht zum default button des Dialogs.
QWizard::NoBackButtonOnStartPage0x00000010Zeigen Sie die Schaltfläche Back nicht auf der Startseite an.
QWizard::NoBackButtonOnLastPage0x00000020Zeigen Sie die Schaltfläche Back nicht auf der letzten Seite an.
QWizard::DisabledBackButtonOnLastPage0x00000040Deaktivieren Sie die Schaltfläche Back auf der letzten Seite.
QWizard::HaveNextButtonOnLastPage0x00000080Zeigen Sie die (deaktivierte) Schaltfläche Next auf der letzten Seite an.
QWizard::HaveFinishButtonOnEarlyPages0x00000100Zeigen Sie die (deaktivierte) Schaltfläche Finish auf nicht-letzten Seiten an.
QWizard::NoCancelButton0x00000200Zeigen Sie die Schaltfläche Cancel nicht an.
QWizard::CancelButtonOnLeft0x00000400Platzieren Sie die Schaltfläche Cancel links von Back (und nicht rechts von Finish oder Next).
QWizard::HaveHelpButton0x00000800Zeigen Sie die Schaltfläche Help an.
QWizard::HelpButtonOnRight0x00001000Legen Sie die Schaltfläche Help ganz rechts in das Schaltflächenlayout (statt ganz links).
QWizard::HaveCustomButton10x00002000Zeigen Sie die erste benutzerdefinierte Schaltfläche (CustomButton1).
QWizard::HaveCustomButton20x00004000Zeigen Sie die zweite benutzerdefinierte Schaltfläche (CustomButton2).
QWizard::HaveCustomButton30x00008000Zeigen Sie die dritte benutzerdefinierte Schaltfläche (CustomButton3).
QWizard::NoCancelButtonOnLastPage0x00010000Zeigen Sie die Schaltfläche Cancel nicht auf der letzten Seite an.

Der Typ WizardOptions ist ein Typedef für QFlags<WizardOption>. Er speichert eine ODER-Kombination von WizardOption-Werten.

Siehe auch setOptions(), setOption(), und testOption().

enum QWizard::WizardPixmap

Diese Aufzählung gibt die Pixmaps an, die mit einer Seite verknüpft werden können.

KonstanteWertBeschreibung
QWizard::WatermarkPixmap0Die große Pixmap auf der linken Seite einer ClassicStyle oder ModernStyle Seite
QWizard::LogoPixmap1Die kleine Pixelgrafik auf der rechten Seite eines ClassicStyle oder ModernStyle Seitenkopfes
QWizard::BannerPixmap2Die Pixelgrafik, die den Hintergrund eines ModernStyle Seitenkopfes einnimmt
QWizard::BackgroundPixmap3Die Pixelgrafik, die den Hintergrund eines MacStyle -Assistenten einnimmt

Siehe auch setPixmap(), QWizardPage::setPixmap(), und Elements of a Wizard Page.

enum QWizard::WizardStyle

Diese Aufzählung spezifiziert die verschiedenen Looks, die von QWizard unterstützt werden.

KonstanteWertBeschreibung
QWizard::ClassicStyle0Klassisches Windows-Aussehen
QWizard::ModernStyle1Modernes Windows-Aussehen
QWizard::MacStyle2macOS-Look
QWizard::AeroStyle3Windows-Aero-Look

Siehe auch setWizardStyle(), WizardOption, und Wizard Look and Feel.

Dokumentation der Eigenschaften

currentId : int

Diese Eigenschaft enthält die ID der aktuellen Seite

Diese Eigenschaft kann nicht direkt gesetzt werden. Um die aktuelle Seite zu ändern, rufen Sie next(), back(), oder restart() auf.

Standardmäßig hat diese Eigenschaft den Wert -1, was bedeutet, dass derzeit keine Seite angezeigt wird.

Zugriffsfunktionen:

int currentId() const
void setCurrentId(int id)

Benachrichtigungssignal:

void currentIdChanged(int id)

Siehe auch currentPage().

options : WizardOptions

Diese Eigenschaft enthält die verschiedenen Optionen, die das Aussehen des Assistenten beeinflussen

Standardmäßig sind die folgenden Optionen eingestellt (abhängig von der Plattform):

Zugriffsfunktionen:

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

Siehe auch wizardStyle.

startId : int

Diese Eigenschaft enthält die ID der ersten Seite

Wenn diese Eigenschaft nicht explizit festgelegt wird, wird sie standardmäßig auf die niedrigste Seiten-ID in diesem Assistenten gesetzt, oder auf -1, wenn noch keine Seite eingefügt wurde.

Zugriffsfunktionen:

int startId() const
void setStartId(int id)

Siehe auch restart() und nextId().

subTitleFormat : Qt::TextFormat

Diese Eigenschaft enthält das von den Seitenuntertiteln verwendete Textformat

Das Standardformat ist Qt::AutoText.

Zugriffsfunktionen:

Qt::TextFormat subTitleFormat() const
void setSubTitleFormat(Qt::TextFormat format)

Siehe auch QWizardPage::title und titleFormat.

titleFormat : Qt::TextFormat

Diese Eigenschaft enthält das von Seitentiteln verwendete Textformat

Das Standardformat ist Qt::AutoText.

Zugriffsfunktionen:

Qt::TextFormat titleFormat() const
void setTitleFormat(Qt::TextFormat format)

Siehe auch QWizardPage::title und subTitleFormat.

wizardStyle : WizardStyle

Diese Eigenschaft legt das Aussehen des Assistenten fest

Standardmäßig verwendet QWizard auf einem Windows Vista-System mit aktiviertem Alpha-Compositing AeroStyle, unabhängig vom aktuellen Widget-Stil. Ist dies nicht der Fall, hängt der Standardstil des Assistenten wie folgt vom aktuellen Widgetstil ab: MacStyle ist der Standard, wenn der aktuelle Widgetstil QMacStyle ist, ModernStyle ist der Standard, wenn der aktuelle Widgetstil QWindowsStyle ist, und ClassicStyle ist der Standard in allen anderen Fällen.

Zugriffsfunktionen:

QWizard::WizardStyle wizardStyle() const
void setWizardStyle(QWizard::WizardStyle style)

Siehe auch Wizard Look and Feel und options.

Dokumentation der Mitgliedsfunktionen

[explicit] QWizard::QWizard(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())

Konstruiert einen Assistenten mit dem angegebenen parent und dem Fenster flags.

Siehe auch parent() und windowFlags().

[virtual noexcept] QWizard::~QWizard()

Zerstört den Assistenten und seine Seiten und gibt alle zugewiesenen Ressourcen frei.

int QWizard::addPage(QWizardPage *page)

Fügt die angegebene page zum Assistenten hinzu und gibt die ID der Seite zurück.

Die ID ist garantiert größer als jede andere ID in der QWizard bisher.

Siehe auch setPage(), page(), und pageAdded().

[slot] void QWizard::back()

Kehrt zur vorherigen Seite zurück.

Dies entspricht dem Drücken der Taste Back.

Siehe auch next(), accept(), reject(), und restart().

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

Gibt die Schaltfläche zurück, die der Rolle which entspricht.

Siehe auch setButton() und setButtonText().

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

Gibt den Text der Schaltfläche which zurück.

Wenn ein Text mit setButtonText() festgelegt wurde, wird dieser Text zurückgegeben.

Standardmäßig hängt der Text auf den Schaltflächen vom wizardStyle ab. Unter macOS heißt die Schaltfläche Next beispielsweise Continue.

Siehe auch button(), setButton(), setButtonText(), QWizardPage::buttonText(), und QWizardPage::setButtonText().

[virtual protected] void QWizard::cleanupPage(int id)

Diese virtuelle Funktion wird von QWizard aufgerufen, um die Seite id aufzuräumen, kurz bevor der Benutzer sie durch Anklicken von Back verlässt (es sei denn, die Option QWizard::IndependentPages ist gesetzt).

Die Standardimplementierung ruft QWizardPage::cleanupPage() auf page(id) auf.

Siehe auch QWizardPage::cleanupPage() und initializePage().

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

Dieses Signal wird ausgegeben, wenn die aktuelle Seite wechselt, mit der neuen aktuellen id.

Hinweis: Benachrichtigungssignal für die Eigenschaft currentId.

Siehe auch currentId() und currentPage().

QWizardPage *QWizard::currentPage() const

Gibt einen Zeiger auf die aktuelle Seite zurück, oder nullptr, wenn es keine aktuelle Seite gibt (z. B. bevor der Assistent angezeigt wird).

Dies ist gleichbedeutend mit dem Aufruf von page(currentId()).

Siehe auch page(), currentId(), und restart().

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

Dieses Signal wird ausgegeben, wenn der Benutzer auf eine benutzerdefinierte Schaltfläche klickt. which kann CustomButton1, CustomButton2 oder CustomButton3 sein.

Standardmäßig wird keine benutzerdefinierte Schaltfläche angezeigt. Rufen Sie setOption() mit HaveCustomButton1, HaveCustomButton2 oder HaveCustomButton3 auf, um eine zu haben, und verwenden Sie setButtonText() oder setButton(), um sie zu konfigurieren.

Siehe auch helpRequested().

[override virtual protected] void QWizard::done(int result)

Reimplements: QDialog::done(int r).

[override virtual protected] bool QWizard::event(QEvent *event)

Reimplements: QWidget::event(QEvent *Event).

QVariant QWizard::field(const QString &name) const

Gibt den Wert des Feldes mit dem Namen name zurück.

Diese Funktion kann für den Zugriff auf Felder auf jeder Seite des Assistenten verwendet werden.

Siehe auch QWizardPage::registerField(), QWizardPage::field(), und setField().

bool QWizard::hasVisitedPage(int id) const

Gibt true zurück, wenn der Seitenverlauf die Seite id enthält; andernfalls wird false zurückgegeben.

Durch Drücken von Back wird die aktuelle Seite wieder als "unbesucht" markiert.

Siehe auch visitedIds().

[signal] void QWizard::helpRequested()

Dieses Signal wird ausgegeben, wenn der Benutzer auf die Schaltfläche Help klickt.

Standardmäßig wird keine Schaltfläche Help angezeigt. Rufen Sie setOption(HaveHelpButton, true) auf, um eine zu erhalten.

Beispiel:

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);

}

Siehe auch customButtonClicked().

[virtual protected] void QWizard::initializePage(int id)

Diese virtuelle Funktion wird von QWizard aufgerufen, um die Seite id vorzubereiten, kurz bevor sie entweder durch den Aufruf von QWizard::restart() oder durch das Anklicken von Next angezeigt wird. (Wenn jedoch die Option QWizard::IndependentPages gesetzt ist, wird diese Funktion nur beim ersten Anzeigen der Seite aufgerufen).

Durch die Neuimplementierung dieser Funktion können Sie sicherstellen, dass die Felder der Seite auf der Grundlage der Felder früherer Seiten richtig initialisiert werden.

Die Standardimplementierung ruft QWizardPage::initializePage() auf page(id) auf.

Siehe auch QWizardPage::initializePage() und cleanupPage().

[override virtual protected] bool QWizard::nativeEvent(const QByteArray &eventType, void *message, qintptr *result)

Reimplements: QWidget::nativeEvent(const QByteArray &eventType, void *message, qintptr *result).

[slot] void QWizard::next()

Wechselt zur nächsten Seite.

Dies entspricht dem Drücken der Taste Next oder Commit.

Siehe auch nextId(), back(), accept(), reject(), und restart().

[virtual] int QWizard::nextId() const

Diese virtuelle Funktion wird von QWizard aufgerufen, um herauszufinden, welche Seite angezeigt werden soll, wenn der Benutzer auf die Schaltfläche Next klickt.

Der Rückgabewert ist die ID der nächsten Seite, oder -1, wenn keine Seite folgt.

Die Standardimplementierung ruft QWizardPage::nextId() auf currentPage() auf.

Wenn Sie diese Funktion neu implementieren, können Sie eine dynamische Seitenreihenfolge festlegen.

Siehe auch QWizardPage::nextId() und currentPage().

QWizardPage *QWizard::page(int id) const

Gibt die Seite mit dem angegebenen id zurück, oder nullptr, wenn es keine solche Seite gibt.

Siehe auch addPage() und setPage().

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

Dieses Signal wird ausgegeben, wenn eine Seite zum Assistenten hinzugefügt wird. Die id der Seite wird als Parameter übergeben.

Siehe auch addPage(), setPage(), und startId().

QList<int> QWizard::pageIds() const

Gibt die Liste der Seiten-IDs zurück.

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

Dieses Signal wird ausgegeben, wenn eine Seite aus dem Assistenten entfernt wird. Die id der Seite wird als Parameter übergeben.

Siehe auch removePage() und startId().

[override virtual protected] void QWizard::paintEvent(QPaintEvent *event)

Reimplements: QWidget::paintEvent(QPaintEvent *event).

QPixmap QWizard::pixmap(QWizard::WizardPixmap which) const

Gibt die für die Rolle which eingestellte Pixmap zurück.

Standardmäßig ist die einzige Pixmap, die eingestellt ist, die BackgroundPixmap unter macOS.

Siehe auch setPixmap(), QWizardPage::pixmap(), und Elements of a Wizard Page.

void QWizard::removePage(int id)

Entfernt die Seite mit der angegebenen id. cleanupPage() wird bei Bedarf aufgerufen.

Hinweis: Das Entfernen einer Seite kann den Wert der Eigenschaft startId beeinflussen.

Siehe auch addPage(), setPage(), pageRemoved(), und startId().

[override virtual protected] void QWizard::resizeEvent(QResizeEvent *event)

Reimplements: QDialog::resizeEvent(QResizeEvent *).

[slot] void QWizard::restart()

Startet den Assistenten auf der Startseite neu. Diese Funktion wird automatisch aufgerufen, wenn der Assistent angezeigt wird.

Siehe auch startId().

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

Setzt die Schaltfläche, die der Rolle which bis button entspricht.

Um dem Assistenten weitere Schaltflächen hinzuzufügen (z. B. eine Schaltfläche Print ), kann man setButton() mit CustomButton1 bis CustomButton3 aufrufen und die Schaltflächen mit den Optionen HaveCustomButton1 bis HaveCustomButton3 sichtbar machen.

Siehe auch button(), setButtonText(), setButtonLayout(), und options.

void QWizard::setButtonLayout(const QList<QWizard::WizardButton> &layout)

Legt die Reihenfolge fest, in der die Schaltflächen auf layout angezeigt werden, wobei layout eine Liste von WizardButtonist.

Das Standardlayout hängt von den eingestellten Optionen ab (z. B. ob HelpButtonOnRight). Sie können diese Funktion aufrufen, wenn Sie mehr Kontrolle über das Layout der Schaltflächen benötigen, als es options bereits bietet.

Sie können horizontale Ausdehnungen im Layout mit Stretch festlegen.

Beispiel:

MyWizard::MyWizard(QWidget *parent)
    : QWizard(parent)
{
    ...
    QList<QWizard::WizardButton> layout;
    layout << QWizard::Stretch << QWizard::BackButton << QWizard::CancelButton
           << QWizard::NextButton << QWizard::FinishButton;
    setButtonLayout(layout);
    ...
}

Siehe auch setButton(), setButtonText(), und setOptions().

void QWizard::setButtonText(QWizard::WizardButton which, const QString &text)

Legt den Text der Schaltfläche which auf text fest.

Standardmäßig hängt der Text der Schaltflächen vom wizardStyle ab. Unter macOS heißt die Schaltfläche Next beispielsweise Continue.

Um dem Assistenten weitere Schaltflächen hinzuzufügen (z. B. eine Schaltfläche Print ), besteht eine Möglichkeit darin, setButtonText() mit CustomButton1, CustomButton2 oder CustomButton3 aufzurufen, um deren Text festzulegen, und die Schaltflächen mit den Optionen HaveCustomButton1, HaveCustomButton2 und/oder HaveCustomButton3 sichtbar zu machen.

Schaltflächentexte können auch mit QWizardPage::setButtonText() seitenweise gesetzt werden.

Siehe auch buttonText(), setButton(), button(), setButtonLayout(), setOptions(), und QWizardPage::setButtonText().

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

Setzt currentId auf id, ohne die Seiten zwischen currentId und id zu besuchen.

Kehrt ohne Seitenwechsel zurück, wenn

  • der Assistent keine Seiten enthält
  • die aktuelle Seite ungültig ist
  • die angegebene Seite ist gleich currentId()
  • die angegebene Seite liegt außerhalb des Bereichs

Hinweis: Wenn Seiten vorwärts übersprungen wurden und id gleich 0 ist, wird der Verlauf der Seitenbesuche gelöscht

Hinweis: Setter-Funktion für die Eigenschaft currentId.

Siehe auch currentId().

void QWizard::setDefaultProperty(const char *className, const char *property, const char *changedSignal)

Setzt die Standardeigenschaft für className auf property und das zugehörige Änderungssignal auf changedSignal.

Die Standardeigenschaft wird verwendet, wenn eine Instanz von className (oder einer ihrer Unterklassen) an QWizardPage::registerField() übergeben wird und keine Eigenschaft angegeben ist.

QWizard kennt die gebräuchlichsten Qt Widgets. Für diese (oder ihre Unterklassen) müssen Sie keine property oder changedSignal angeben. Die folgende Tabelle listet diese Widgets auf:

Siehe auch QWizardPage::registerField().

void QWizard::setField(const QString &name, const QVariant &value)

Setzt den Wert des Feldes mit der Bezeichnung name auf value.

Diese Funktion kann verwendet werden, um Felder auf jeder Seite des Assistenten zu setzen.

Siehe auch QWizardPage::registerField(), QWizardPage::setField(), und field().

void QWizard::setOption(QWizard::WizardOption option, bool on = true)

Setzt das angegebene option auf aktiv, wenn on wahr ist; andernfalls wird das angegebene option gelöscht.

Siehe auch options, testOption(), und setWizardStyle().

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

Fügt die angegebene page zum Assistenten mit der angegebenen id hinzu.

Hinweis: Das Hinzufügen einer Seite kann den Wert der Eigenschaft startId beeinflussen, falls diese nicht explizit gesetzt wurde.

Siehe auch addPage(), page(), und pageAdded().

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

Setzt die Pixmap für die Rolle which auf pixmap.

Die Pixmaps werden von QWizard verwendet, wenn eine Seite angezeigt wird. Welche Pixmaps tatsächlich verwendet werden, hängt von der wizard style ab.

Pixmaps können auch für eine bestimmte Seite mit QWizardPage::setPixmap() gesetzt werden.

Siehe auch pixmap(), QWizardPage::setPixmap(), und Elements of a Wizard Page.

void QWizard::setSideWidget(QWidget *widget)

Legt fest, dass das angegebene widget auf der linken Seite des Assistenten angezeigt werden soll. Bei Stilen, die das WatermarkPixmap verwenden (ClassicStyle und ModernStyle), wird das Seiten-Widget über dem Wasserzeichen angezeigt, bei anderen Stilen oder wenn das Wasserzeichen nicht vorhanden ist, wird das Seiten-Widget auf der linken Seite des Assistenten angezeigt.

Bei der Angabe nullptr wird kein Seiten-Widget angezeigt.

Wenn widget nicht nullptr ist, wird es vom Assistenten repariert.

Alle vorherigen Seiten-Widgets werden ausgeblendet.

Sie können setSideWidget() mit demselben Widget zu verschiedenen Zeitpunkten aufrufen.

Alle hier gesetzten Widgets werden vom Assistenten gelöscht, wenn er zerstört wird, es sei denn, Sie reparieren das Widget separat, nachdem Sie ein anderes Seiten-Widget gesetzt haben (oder nullptr).

Standardmäßig ist kein Seiten-Widget vorhanden.

Siehe auch sideWidget().

[override virtual] void QWizard::setVisible(bool visible)

Reimplements: QDialog::setVisible(bool visible).

QWidget *QWizard::sideWidget() const

Gibt das Widget auf der linken Seite des Assistenten oder nullptr zurück.

Standardmäßig ist kein Seiten-Widget vorhanden.

Siehe auch setSideWidget().

[override virtual] QSize QWizard::sizeHint() const

Reimplements: QDialog::sizeHint() const.

bool QWizard::testOption(QWizard::WizardOption option) const

Gibt true zurück, wenn die angegebene option aktiviert ist; andernfalls wird false zurückgegeben.

Siehe auch options, setOption(), und setWizardStyle().

[virtual] bool QWizard::validateCurrentPage()

Diese virtuelle Funktion wird von QWizard aufgerufen, wenn der Benutzer auf Next oder Finish klickt, um eine Überprüfung in letzter Minute vorzunehmen. Wenn sie true zurückgibt, wird die nächste Seite angezeigt (oder der Assistent beendet); andernfalls bleibt die aktuelle Seite bestehen.

Die Standardimplementierung ruft QWizardPage::validatePage() auf currentPage() auf.

Wenn möglich, ist es normalerweise besser, die Schaltfläche Next oder Finish zu deaktivieren (durch Angabe von mandatory fields oder durch Neuimplementierung von QWizardPage::isComplete()), als validateCurrentPage() neu zu implementieren.

Siehe auch QWizardPage::validatePage() und currentPage().

QList<int> QWizard::visitedIds() const

Gibt die Liste der IDs der besuchten Seiten zurück, und zwar in der Reihenfolge, in der die Seiten besucht wurden.

Siehe auch hasVisitedPage().

© 2025 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.