Auf dieser Seite

QWizard Class

Die Klasse „QWizard“ bietet ein Framework für Assistenten. Mehr...

Überschrift: #include <QWizard>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Erbt von: QDialog

Öffentliche Typen

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 }

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

Neu implementierte ö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)

Neu implementierte 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

Ausführliche Beschreibung

Ein Assistent (unter macOS auch als „Wizard“ bezeichnet) ist eine spezielle Art von Eingabedialog, der aus einer Abfolge von Seiten besteht. Der Zweck eines Assistenten besteht darin, den Benutzer Schritt für Schritt durch einen Vorgang zu führen. Assistenten sind nützlich für komplexe oder selten ausgeführte Aufgaben, deren Erlernen für Benutzer schwierig sein kann.

QWizard erbt von „ QDialog “ und repräsentiert einen Assistenten. Jede Seite ist ein „ QWizardPage “ (eine Unterklasse von „ QWidget “). Um eigene Assistenten zu erstellen, können Sie diese Klassen direkt verwenden oder Unterklassen davon erstellen, um mehr Kontrolle zu erhalten.

Ein einfaches Beispiel

Das folgende Beispiel veranschaulicht, wie man Assistentenseiten erstellt und sie einem Assistenten hinzufügt. Weiterführende Beispiele finden Sie im Lizenz-Assistenten.

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

Darstellung und Bedienung des Assistenten

QWizard unterstützt vier verschiedene Assistentendesigns:

Sie können das zu verwendende Design explizit mit ` setWizardStyle()` festlegen (z. B. wenn Sie auf allen Plattformen dasselbe Design verwenden möchten).

Hinweis: „ AeroStyle “ wirkt sich nur auf Windows-Vista-Systemen aus, auf denen Alpha-Compositing aktiviert ist. „ ModernStyle “ wird als Fallback verwendet, wenn diese Bedingung nicht erfüllt ist.

Zusätzlich zum Assistentenstil gibt es mehrere Optionen, die das Erscheinungsbild des Assistenten steuern. Diese können mit ` setOption()` oder ` setOptions()` festgelegt werden. Beispielsweise bewirkt ` HaveHelpButton `, dass QWizard neben den anderen Assistenten-Schaltflächen eine Schaltfläche „ Help “ anzeigt.

Sie können sogar die Reihenfolge der Assistenten-Schaltflächen mithilfe von ` setButtonLayout()` beliebig ändern und bis zu drei benutzerdefinierte Schaltflächen (z. B. eine Schaltfläche „ Print “) zur Schaltflächenreihe hinzufügen. Dies erreichen Sie, 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 ein „ customButtonClicked()“-Ereignis ausgelöst. 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 Abfolge von „ QWizardPage“. Zu jedem Zeitpunkt wird nur eine Seite angezeigt. Eine Seite verfügt über die folgenden Attribute:

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

Attribute auf einer Assistentenseite

Wenn ein „ subTitle “ festgelegt ist, zeigt QWizard diesen in einer Kopfzeile an; in diesem Fall verwendet es außerdem die Elemente „ BannerPixmap “ und „ LogoPixmap “, um die Kopfzeile zu gestalten. 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 “ lautet, sieht die Seite völlig anders aus:

Attribute auf einer Assistentenseite unter Verwendung von MacStyle

Die Pixmaps für Wasserzeichen, Banner und Logo werden vom „ MacStyle “ ignoriert. Ist „ BackgroundPixmap “ festgelegt, wird es als Hintergrund für den Assistenten verwendet; andernfalls wird ein Standardbild namens „assistant“ verwendet.

Titel und Untertitel werden durch den Aufruf von ` QWizardPage::setTitle()` und ` QWizardPage::setSubTitle()` auf den einzelnen Seiten festgelegt. Sie können aus reinem Text oder HTML bestehen (siehe titleFormat und subTitleFormat). Die Pixmaps können global für den gesamten Assistenten mit ` setPixmap()` oder seitenweise mit ` QWizardPage::setPixmap()` festgelegt werden.

Felder registrieren und verwenden

In vielen Assistenten kann der Inhalt einer Seite die Standardwerte der Felder einer nachfolgenden Seite beeinflussen. Um die Kommunikation zwischen den Seiten zu vereinfachen, unterstützt QWizard einen „Feld“-Mechanismus, mit dem Sie ein Feld (z. B. ein QLineEdit) auf einer Seite registrieren und von jeder Seite aus auf dessen Wert zugreifen können. Es ist außerdem möglich, Pflichtfelder festzulegen (d. h. Felder, die ausgefüllt werden müssen, bevor der Benutzer zur nächsten Seite weitergehen kann).

Um ein Feld zu registrieren, rufen Sie die Funktion ` QWizardPage::registerField()` auf. Beispiel:

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

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

Auf die Felder einer beliebigen Seite kann von jeder anderen Seite aus zugegriffen werden. Zum 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 verwenden diesen, um ` ConclusionPage` zu initialisieren. 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 außerdem einen Qt-Eigenschaftsnamen und ein „changed“-Signal (ein Signal, das ausgelöst wird, wenn sich die Eigenschaft ändert) als drittes und viertes Argument angeben; dies ist jedoch für die gängigsten Qt Widgets wie QLineEdit, QCheckBox und QComboBox nicht erforderlich, da QWizard weiß, nach welchen Eigenschaften gesucht werden muss.

Wird bei der Registrierung der Eigenschaft ein Sternchen (*) an den Namen angehängt, handelt es sich um ein Pflichtfeld. Enthält eine Seite Pflichtfelder, sind die Schaltflächen „ Next “ und/oder „ Finish “ erst dann aktiviert, wenn alle Pflichtfelder ausgefüllt sind.

Um ein Feld als „ausgefüllt“ zu betrachten, prüft QWizard lediglich, ob der aktuelle Wert des Feldes nicht mit dem ursprünglichen Wert übereinstimmt (dem Wert, den es hatte, als initializePage() aufgerufen wurde). Bei Unterklassen von QLineEdit und QAbstractSpinBox prüft QWizard zusätzlich, ob hasAcceptableInput() den Wert „true“ zurückgibt, um etwaige Validatoren oder Masken zu berücksichtigen.

Der Mechanismus für Pflichtfelder in QWizard dient der Benutzerfreundlichkeit. Eine leistungsfähigere (aber auch aufwändigere) Alternative besteht darin, die Methode ` QWizardPage::isComplete()` neu zu implementieren und das Signal ` QWizardPage::completeChanged()` auszulösen, sobald die Seite vollständig oder unvollständig wird.

Der aktivierte bzw. deaktivierte Zustand der Schaltflächen „ Next “ und/oder „ Finish “ ist eine Möglichkeit, die Benutzereingabe zu validieren. Eine weitere Möglichkeit besteht darin, die Funktion „ validateCurrentPage()“ (oder „ QWizardPage::validatePage()“) neu zu implementieren, um eine abschließende Validierung durchzuführen (und eine Fehlermeldung anzuzeigen, falls der Benutzer unvollständige oder ungültige Informationen eingegeben hat). Gibt die Funktion „ true “ zurück, wird die nächste Seite angezeigt (oder der Assistent wird beendet); andernfalls bleibt die aktuelle Seite geöffnet.

Erstellen linearer Assistenten

Die meisten Assistenten haben eine lineare Struktur, bei der auf Seite 1 Seite 2 folgt und so weiter bis zur letzten Seite. Das Beispiel „Trivial Wizard“ ist ein solcher Assistent. Mit QWizard werden lineare Assistenten erstellt, indem die ` QWizardPage`-Objekte instanziiert und mithilfe von ` addPage()` eingefügt werden. Standardmäßig werden die Seiten in der Reihenfolge angezeigt, in der sie hinzugefügt wurden. Zum Beispiel:

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

Wenn eine Seite angezeigt werden soll, ruft QWizard ` initializePage()` auf (was wiederum ` QWizardPage::initializePage()` aufruft), um die Seite mit Standardwerten zu füllen. Standardmäßig führt diese Funktion keine Aktion aus, sie kann jedoch neu implementiert werden, um den Inhalt der Seite basierend auf den Feldern anderer Seiten zu initialisieren (siehe „ example above “).

Wenn der Benutzer auf „ Back “ klickt, wird „ cleanupPage “ () aufgerufen (das wiederum „ QWizardPage::cleanupPage “ () aufruft). Die Standardimplementierung setzt die Felder der Seite auf ihre ursprünglichen Werte zurück (die Werte, die sie vor dem Aufruf von „ initializePage “ () hatten). 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 “.

Erstellen nichtlinearer Assistenten

Manche Assistenten sind komplexer, da sie je nach den vom Benutzer bereitgestellten Informationen unterschiedliche Durchlaufpfade zulassen. Das Beispiel „License Wizard“ veranschaulicht dies. Es bietet mehrere Assistentenseiten; je nachdem, welche Optionen ausgewählt werden, kann der Benutzer verschiedene Seiten aufrufen.

Flussdiagramm für den Ablauf einer komplexen Assistentenseite

In komplexen Assistenten werden Seiten durch IDs identifiziert. Diese IDs werden in der Regel mithilfe einer Enumeration definiert. Zum Beispiel:

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

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

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 Reihenfolge der IDs angezeigt. Um eine dynamische Reihenfolge zu erzielen, die von den vom Benutzer gewählten Optionen abhängt, müssen wir ` QWizardPage::nextId()` neu implementieren. Zum 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 Neuimplementierung von ` QWizard::nextId()` zusammenzufassen. Zum 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 mit einer anderen Seite als der Seite mit der niedrigsten ID zu beginnen, rufen Sie ` setStartId()` auf.

Um zu prüfen, ob eine Seite bereits besucht wurde oder nicht, rufen Sie ` hasVisitedPage()` auf. 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“ , „Triviales Assistentenbeispiel“ und „Lizenz-Assistentenbeispiel“.

Dokumentation zu Mitgliedstypen

enum QWizard::WizardButton

Diese Enumeration legt die Schaltflächen in einem Assistenten fest.

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()` von Bedeutung:

KonstanteWertBeschreibung
QWizard::Stretch9Eine horizontale Dehnung im Schaltflächenlayout

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

enum QWizard::WizardOption
flags QWizard::WizardOptions

Diese Enumeration legt verschiedene Optionen fest, die das Erscheinungsbild eines Assistenten beeinflussen.

KonstanteWertBeschreibung
QWizard::IndependentPages0x00000001Die Seiten sind voneinander unabhängig (d. h., sie leiten keine Werte voneinander ab).
QWizard::IgnoreSubTitles0x00000002Es werden keine Untertitel angezeigt, auch wenn diese festgelegt sind.
QWizard::ExtendedWatermarkPixmap0x00000004Erweitere alle „ WatermarkPixmap “-Elemente bis ganz an den Rand des Fensters.
QWizard::NoDefaultButton0x00000008Die Schaltfläche „ Next “ oder „ Finish “ darf nicht die „ default button “ des Dialogfelds sein.
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::HaveNextButtonOnLastPage0x00000080Zeige die (deaktivierte) Schaltfläche „ Next “ auf der letzten Seite an.
QWizard::HaveFinishButtonOnEarlyPages0x00000100Zeige die (deaktivierte) Schaltfläche „ Finish “ auf Seiten an, die nicht die letzte Seite sind.
QWizard::NoCancelButton0x00000200Die Schaltfläche „ Cancel “ nicht anzeigen.
QWizard::CancelButtonOnLeft0x00000400Die Schaltfläche „ Cancel “ links neben „ Back “ platzieren (anstatt rechts neben „ Finish “ oder „ Next “).
QWizard::HaveHelpButton0x00000800Zeigen Sie die Schaltfläche „ Help “ an.
QWizard::HelpButtonOnRight0x00001000Platzieren Sie die Schaltfläche „ Help “ ganz rechts im Schaltflächenlayout (statt ganz links).
QWizard::HaveCustomButton10x00002000Zeigen Sie die erste benutzerdefinierte Schaltfläche an (CustomButton1).
QWizard::HaveCustomButton20x00004000Zeigen Sie die zweite benutzerdefinierte Schaltfläche an (CustomButton2).
QWizard::HaveCustomButton30x00008000Zeigen Sie die dritte benutzerdefinierte Schaltfläche an (CustomButton3).
QWizard::NoCancelButtonOnLastPage0x00010000Die Schaltfläche „ Cancel “ auf der letzten Seite nicht anzeigen.
QWizard::StretchBanner0x00020000Falls eine Schaltfläche „ banner “ vorhanden ist, strecken Sie diese über die gesamte Breite des Assistenten.

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 Enumeration legt fest, welche Pixmaps einer Seite zugeordnet werden können.

KonstanteWertBeschreibung
QWizard::WatermarkPixmap0Die hohe Pixmap auf der linken Seite einer Seite unter ClassicStyle oder ModernStyle
QWizard::LogoPixmap1Die kleine Pixmap auf der rechten Seite einer ClassicStyle - oder ModernStyle -Seitenkopfzeile
QWizard::BannerPixmap2Das Pixmap, das den Hintergrund der Kopfzeile einer Seite unter ModernStyle bildet
QWizard::BackgroundPixmap3Das Pixmap, das den Hintergrund eines MacStyle -Assistenten bildet

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

enum QWizard::WizardStyle

Diese Enumeration legt die verschiedenen von QWizard unterstützten Designs fest.

KonstanteWertBeschreibung
QWizard::ClassicStyle0Klassisches Windows-Design
QWizard::ModernStyle1Modernes Windows-Design
QWizard::MacStyle2macOS-Design
QWizard::AeroStyle3Windows-Aero-Design

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

Dokumentation zu den Eigenschaften

currentId : int

Diese Eigenschaft enthält die ID der aktuellen Seite

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 Erscheinungsbild des Assistenten beeinflussen

Standardmäßig sind die folgenden Optionen eingestellt (je nach 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 standardmäßig die niedrigste Seiten-ID in diesem Assistenten verwendet oder -1, falls 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 Textformat, das für Seitenuntertitel verwendet wird

Das Standardformat lautet „ 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 Textformat, das für Seitentitel verwendet wird

Das Standardformat lautet „ Qt::AutoText “.

Zugriffsfunktionen:

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

Siehe auch „ QWizardPage::title “ und „ subTitleFormat “.

wizardStyle : WizardStyle

Diese Eigenschaft bestimmt das Erscheinungsbild des Assistenten

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

Zugriffsfunktionen:

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

Siehe auch Wizard Look and Feel und options.

Dokumentation zu den Mitgliedsfunktionen

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

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

Siehe auch parent() und windowFlags().

[virtual noexcept] QWizard::~QWizard()

Vernichtet den Wizard 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.

Es wird garantiert, dass die ID größer ist als jede andere ID in der „ QWizard “ bis zu diesem Zeitpunkt.

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

[slot] void QWizard::back()

Kehrt zur vorherigen Seite zurück.

Dies entspricht dem Klicken auf die Schaltfläche „ 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 mit ` setButtonText()` ein Text festgelegt wurde, wird dieser Text zurückgegeben.

Standardmäßig hängt der Text auf den Schaltflächen von der „ 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 zu bereinigen, kurz bevor der Benutzer sie durch Klicken auf Back verlässt (es sei denn, die Option QWizard::IndependentPages ist gesetzt).

Die Standardimplementierung ruft ` QWizardPage::cleanupPage()` auf der Seite `id` auf.

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

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

Dieses Signal wird ausgelöst, wenn sich die aktuelle Seite ändert, wobei die neue aktuelle Seite id lautet.

Hinweis: Notifier -Signal 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 “, falls keine aktuelle Seite vorhanden ist (z. B. bevor der Assistent angezeigt wird).

Dies entspricht dem Aufruf von page(currentId()).

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

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

Dieses Signal wird ausgelöst, 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 solche Schaltfläche anzuzeigen, und verwenden Sie ` setButtonText()` oder ` setButton()`, um sie zu konfigurieren.

Siehe auch helpRequested().

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

Implementiert: QDialog::done(int r).

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

Umsetzt: ` QWidget::event(QEvent *event)`.

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

Gibt den Wert des Feldes „ name “ zurück.

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

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 ausgelöst, 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 solche Schaltfläche anzuzeigen.

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 als Ergebnis des Aufrufs von ` QWizard::restart()` oder als Folge eines Klicks des Benutzers auf ` Next` angezeigt wird. (Ist jedoch die Option ` QWizard::IndependentPages ` gesetzt, 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 aus vorherigen Seiten korrekt initialisiert werden.

Die Standardimplementierung ruft ` QWizardPage::initializePage()` auf der Seite `(id)` auf.

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

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

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

[slot] void QWizard::next()

Wechselt zur nächsten Seite.

Dies entspricht dem Klicken auf die Schaltfläche „ Next “ oder „ Commit “.

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

[virtual] int QWizard::nextId() const

Diese virtuelle Funktion wird von „ QWizard “ aufgerufen, um zu ermitteln, 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()“ innerhalb von „ currentPage()“ auf.

Durch die Neuimplementierung dieser Funktion können Sie eine dynamische Seitenreihenfolge festlegen.

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

QWizardPage *QWizard::page(int id) const

Gibt die Seite mit der angegebenen Adresse id zurück oder nullptr, falls keine solche Seite existiert.

Siehe auch addPage() und setPage().

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

Dieses Signal wird immer dann ausgelöst, wenn dem Assistenten eine Seite hinzugefügt wird. Die URL der Seite („ id “) 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 ausgelöst, sobald eine Seite aus dem Assistenten entfernt wird. Die URL der Seite ( id ) wird als Parameter übergeben.

Siehe auch „ removePage()“ und „ startId()“.

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

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

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

Gibt die für die Rolle „ which “ festgelegte Pixmap zurück.

Standardmäßig ist unter macOS nur das Pixmap „ BackgroundPixmap “ festgelegt.

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

void QWizard::removePage(int id)

Entfernt die Seite mit der angegebenen „ id “. Falls erforderlich, wird „ cleanupPage()“ 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)

Implementiert: ` 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 “ entspricht, auf „ button “.

Um dem Assistenten zusätzliche Schaltflächen hinzuzufügen (z. B. eine Schaltfläche „ Print “), können Sie unter anderem die Funktion `setButton()` mit den Werten ` CustomButton1 ` bis ` CustomButton3` aufrufen und die Schaltflächen mithilfe der 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 Schaltflächen angezeigt werden: „ layout “, wobei „ layout “ eine Liste von „ WizardButton“-Objekten ist.

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

Mit „ Stretch “ können Sie horizontale Abstände im Layout 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 auf der Schaltfläche „ which “ auf „ text “ fest.

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

Um dem Assistenten zusätzliche Schaltflächen hinzuzufügen (z. B. eine Schaltfläche „ Print “), können Sie unter anderem die Methode `setButtonText()` mit den Werten ` CustomButton1`, ` CustomButton2` oder ` CustomButton3 ` aufrufen, um deren Text festzulegen, und die Schaltflächen mithilfe der Optionen ` HaveCustomButton1`, ` HaveCustomButton2` und/oder ` HaveCustomButton3 ` sichtbar machen.

Schaltflächentexte können auch seitenweise mithilfe von ` QWizardPage::setButtonText()` festgelegt 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 “ aufzurufen.

Kehrt ohne Seitenwechsel zurück, wenn

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

Hinweis: Wenn Seiten übersprungen wurden und id den Wert 0 hat, wird der Seitenverlauf 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)

Legt die Standardeigenschaft für „ className “ auf „ property “ und das zugehörige Änderungssignal auf „ changedSignal “ fest.

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

QWizard kennt die gängigsten Qt Widgets. Für diese (oder deren Unterklassen) müssen Sie weder ein ` property ` noch ein ` 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 „ 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 die angegebene „ option “ auf „enabled“, wenn „ on “ wahr ist; andernfalls wird die angegebene „ option “ zurückgesetzt.

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

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

Fügt die angegebene „ page “ dem Assistenten mit der angegebenen „ id “ hinzu.

Hinweis: Das Hinzufügen einer Seite kann den Wert der Eigenschaft „ startId “ beeinflussen, falls dieser nicht explizit festgelegt wurde.

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

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

Legt die Pixmap für die Rolle „ which “ auf „ pixmap “ fest.

Die Pixmaps werden von ` QWizard ` bei der Anzeige einer Seite verwendet. Welche Pixmaps tatsächlich verwendet werden, hängt von ` wizard style` ab.

Pixmaps können auch für eine bestimmte Seite mithilfe von ` QWizardPage::setPixmap()` festgelegt 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 wird. Bei Stilen, die das „ WatermarkPixmap “ verwenden (ClassicStyle und ModernStyle), wird das Seiten-Widget über dem Wasserzeichen angezeigt; bei anderen Stilen oder wenn kein Wasserzeichen vorhanden ist, wird das Seiten-Widget auf der linken Seite des Assistenten angezeigt.

Wird „ nullptr “ übergeben, wird kein Seiten-Widget angezeigt.

Wenn „ widget “ nicht „ nullptr “ ist, ordnet der Assistent das Seiten-Widget neu zu.

Ein eventuell zuvor vorhandenes Seiten-Widget wird ausgeblendet.

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

Alle hier festgelegten Widgets werden vom Assistenten beim Beenden gelöscht, es sei denn, Sie weisen dem Widget nach dem Festlegen eines anderen Seiten-Widgets (oder von ` nullptr`) separat eine neue übergeordnete Ebene zu.

Standardmäßig ist kein Seiten-Widget vorhanden.

Siehe auch ` sideWidget()`.

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

Implementiert: ` QDialog::setVisible` (bool visible).

QWidget *QWizard::sideWidget() const

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

Standardmäßig ist kein Seiten-Widget vorhanden.

Siehe auch setSideWidget().

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

Implementiert: ` 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 Validierung in letzter Minute durchzuführen. Wenn sie ` true` zurückgibt, wird die nächste Seite angezeigt (oder der Assistent wird beendet); andernfalls bleibt die aktuelle Seite geöffnet.

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

Wenn möglich, ist es in der Regel stilistisch 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 in der Reihenfolge zurück, in der die Seiten besucht wurden.

Siehe auch 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.