QWizardPage Class

Die Klasse QWizardPage ist die Basisklasse für Wizardseiten. Mehr...

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

Eigenschaften

Öffentliche Funktionen

QWizardPage(QWidget *parent = nullptr)
virtual ~QWizardPage()
QString buttonText(QWizard::WizardButton which) const
virtual void cleanupPage()
virtual void initializePage()
bool isCommitPage() const
virtual bool isComplete() const
bool isFinalPage() const
virtual int nextId() const
QPixmap pixmap(QWizard::WizardPixmap which) const
void setButtonText(QWizard::WizardButton which, const QString &text)
void setCommitPage(bool commitPage)
void setFinalPage(bool finalPage)
void setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap)
void setSubTitle(const QString &subTitle)
void setTitle(const QString &title)
QString subTitle() const
QString title() const
virtual bool validatePage()

Signale

Geschützte Funktionen

QVariant field(const QString &name) const
void registerField(const QString &name, QWidget *widget, const char *property = nullptr, const char *changedSignal = nullptr)
void setField(const QString &name, const QVariant &value)
QWizard *wizard() const

Ausführliche Beschreibung

QWizard repräsentiert einen Assistenten. Jede Seite ist eine QWizardPage. Wenn Sie Ihre eigenen Assistenten erstellen, können Sie QWizardPage direkt verwenden, oder Sie können es für mehr Kontrolle unterklassifizieren.

Eine Seite hat die folgenden Attribute, die von QWizard wiedergegeben werden: title, subTitle und set of pixmaps. Einzelheiten finden Sie unter Elements of a Wizard Page. Sobald eine Seite zum Assistenten hinzugefügt wurde (mit QWizard::addPage() oder QWizard::setPage()), gibt wizard() einen Zeiger auf das zugehörige QWizard Objekt zurück.

Page bietet fünf virtuelle Funktionen, die neu implementiert werden können, um ein benutzerdefiniertes Verhalten bereitzustellen:

  • initializePage() wird aufgerufen, um den Inhalt der Seite zu initialisieren, wenn der Benutzer auf die Schaltfläche Next des Assistenten klickt. Wenn Sie die Standardeinstellungen der Seite von den Eingaben des Benutzers auf früheren Seiten ableiten wollen, ist dies die Funktion, die Sie neu implementieren müssen.
  • cleanupPage() wird aufgerufen, um den Inhalt der Seite zurückzusetzen, wenn der Benutzer auf die Schaltfläche Back des Assistenten klickt.
  • validatePage() validiert die Seite, wenn der Benutzer auf Next oder Finish klickt. Sie wird oft verwendet, um eine Fehlermeldung anzuzeigen, wenn der Benutzer unvollständige oder ungültige Informationen eingegeben hat.
  • nextId() gibt die ID der nächsten Seite zurück. Sie ist nützlich bei creating non-linear wizards, die je nach den vom Benutzer eingegebenen Informationen verschiedene Navigationspfade zulassen.
  • isComplete() wird aufgerufen, um festzustellen, ob die Schaltfläche Next und/oder Finish aktiviert oder deaktiviert werden soll. Wenn Sie isComplete() neu implementieren, stellen Sie auch sicher, dass completeChanged() immer dann ausgegeben wird, wenn sich der Gesamtstatus ändert.

Normalerweise schließen sich die Schaltfläche Next und die Schaltfläche Finish eines Assistenten gegenseitig aus. Wenn isFinalPage() true zurückgibt, ist Finish verfügbar; andernfalls ist Next verfügbar. Standardmäßig ist isFinalPage() nur wahr, wenn nextId() -1 zurückgibt. Wenn Sie Next und Final gleichzeitig für eine Seite anzeigen möchten (damit der Benutzer eine "vorzeitige Beendigung" durchführen kann), rufen Sie setFinalPage(true) auf dieser Seite auf. Bei Assistenten, die ein vorzeitiges Beenden unterstützen, sollten Sie auch die Optionen HaveNextButtonOnLastPage und HaveFinishButtonOnEarlyPages für den Assistenten festlegen.

In vielen Assistenten kann der Inhalt einer Seite die Standardwerte der Felder einer späteren Seite beeinflussen. Um die Kommunikation zwischen den Seiten zu erleichtern, unterstützt QWizard die Option "field" mechanism, mit der Sie ein Feld (z. B. QLineEdit) auf einer Seite registrieren und von jeder Seite aus auf seinen Wert zugreifen können. Felder sind global für den gesamten Assistenten und machen es für jede einzelne Seite einfach, auf Informationen zuzugreifen, die von einer anderen Seite gespeichert wurden, ohne dass die gesamte Logik in QWizard abgelegt werden muss oder die Seiten explizit voneinander wissen müssen. Felder werden mit registerField() registriert und können jederzeit mit field() und setField() aufgerufen werden.

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

Dokumentation der Eigenschaften

subTitle : QString

Diese Eigenschaft enthält den Untertitel der Seite

Der Untertitel wird durch das Symbol QWizard zwischen dem Titel und der eigentlichen Seite angezeigt. Untertitel sind optional. In ClassicStyle und ModernStyle ist die Verwendung von Untertiteln notwendig, damit die Überschrift erscheint. In MacStyle wird der Untertitel als Textlabel direkt über der eigentlichen Seite angezeigt.

Der Untertitel kann je nach dem Wert der Eigenschaft QWizard::subTitleFormat aus einfachem Text oder HTML bestehen.

Standardmäßig enthält diese Eigenschaft eine leere Zeichenkette.

Zugriffsfunktionen:

QString subTitle() const
void setSubTitle(const QString &subTitle)

Siehe auch title, QWizard::IgnoreSubTitles, und Elements of a Wizard Page.

title : QString

Diese Eigenschaft enthält den Titel der Seite

Der Titel wird durch das Symbol QWizard über der eigentlichen Seite angezeigt. Alle Seiten sollten einen Titel haben.

Der Titel kann je nach dem Wert der Eigenschaft QWizard::titleFormat aus einfachem Text oder HTML bestehen.

Standardmäßig enthält diese Eigenschaft eine leere Zeichenkette.

Zugriffsfunktionen:

QString title() const
void setTitle(const QString &title)

Siehe auch subTitle und Elements of a Wizard Page.

Dokumentation der Mitgliedsfunktionen

[explicit] QWizardPage::QWizardPage(QWidget *parent = nullptr)

Konstruiert eine Assistentenseite mit der angegebenen parent.

Wenn die Seite mit QWizard::addPage() oder QWizard::setPage() in einen Assistenten eingefügt wird, wird der Assistent automatisch als übergeordnete Seite festgelegt.

Siehe auch wizard().

[virtual noexcept] QWizardPage::~QWizardPage()

Zerstörer.

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

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

Wenn ein Text mit setButtonText() gesetzt wurde, wird dieser Text zurückgegeben. Andernfalls, wenn ein Text mit QWizard::setButtonText() gesetzt wurde, wird dieser Text zurückgegeben.

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

Siehe auch setButtonText(), QWizard::buttonText(), und QWizard::setButtonText().

[virtual] void QWizardPage::cleanupPage()

Diese virtuelle Funktion wird von QWizard::cleanupPage() aufgerufen, wenn der Benutzer die Seite durch Klicken auf Back verlässt (es sei denn, die Option QWizard::IndependentPages ist gesetzt).

Die Standardimplementierung setzt die Felder der Seite auf ihre ursprünglichen Werte zurück (die Werte, die sie hatten, bevor initializePage() aufgerufen wurde).

Siehe auch QWizard::cleanupPage(), initializePage(), und QWizard::IndependentPages.

[signal] void QWizardPage::completeChanged()

Dieses Signal wird immer dann ausgegeben, wenn sich der komplette Zustand der Seite (d.h. der Wert von isComplete()) ändert.

Wenn Sie isComplete() neu implementieren, stellen Sie sicher, dass Sie completeChanged() immer dann ausgeben, wenn sich der Wert von isComplete() ändert, um sicherzustellen, dass QWizard den aktivierten oder deaktivierten Zustand seiner Schaltflächen aktualisiert.

Siehe auch isComplete().

[protected] QVariant QWizardPage::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. Sie ist gleichbedeutend mit dem Aufruf von wizard()->.field(name).

Beispiel:

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

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

[virtual] void QWizardPage::initializePage()

Diese virtuelle Funktion wird von QWizard::initializePage() aufgerufen, um die Seite vorzubereiten, 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 von Feldern früherer Seiten richtig initialisiert werden. 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);
}

Die Standardimplementierung tut nichts.

Siehe auch QWizard::initializePage(), cleanupPage(), und QWizard::IndependentPages.

bool QWizardPage::isCommitPage() const

Gibt true zurück, wenn diese Seite eine Festschreibungsseite ist; andernfalls wird false zurückgegeben.

Siehe auch setCommitPage().

[virtual] bool QWizardPage::isComplete() const

Diese virtuelle Funktion wird von QWizard aufgerufen, um festzustellen, ob die Schaltfläche Next oder Finish aktiviert oder deaktiviert werden soll.

Die Standardimplementierung gibt true zurück, wenn alle mandatory fields gefüllt sind; andernfalls gibt sie false zurück.

Wenn Sie diese Funktion neu implementieren, stellen Sie sicher, dass Sie completeChanged() vom Rest Ihrer Implementierung ausgeben, wenn sich der Wert von isComplete() ändert. Dadurch wird sichergestellt, dass QWizard den aktivierten oder deaktivierten Status seiner Schaltflächen aktualisiert. Ein Beispiel für die Neuimplementierung ist hier verfügbar.

Siehe auch completeChanged() und isFinalPage().

bool QWizardPage::isFinalPage() const

Diese Funktion wird von QWizard aufgerufen, um festzustellen, ob die Schaltfläche Finish für diese Seite angezeigt werden soll oder nicht.

Standardmäßig gibt sie true zurück, wenn es keine nächste Seite gibt (d. h. nextId() gibt -1 zurück); andernfalls gibt sie false zurück.

Durch den expliziten Aufruf von setFinalPage(true) können Sie dem Benutzer ein "frühes Ende" ermöglichen.

Siehe auch isComplete() und QWizard::HaveFinishButtonOnEarlyPages.

[virtual] int QWizardPage::nextId() const

Diese virtuelle Funktion wird von QWizard::nextId() 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.

Standardmäßig gibt diese Funktion die niedrigste ID zurück, die größer ist als die ID der aktuellen Seite, oder -1, wenn es keine solche ID gibt.

Durch Neuimplementierung dieser Funktion können Sie eine dynamische Seitenreihenfolge festlegen. Ein Beispiel:

int IntroPage::nextId() const
{
    if (evaluateRadioButton->isChecked()) {
        return LicenseWizard::Page_Evaluate;
    } else {
        return LicenseWizard::Page_Register;
    }
}

Siehe auch QWizard::nextId().

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

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

Pixmaps können auch für den gesamten Assistenten mit QWizard::setPixmap() festgelegt werden. In diesem Fall gelten sie für alle Seiten, die keine Pixmap angeben.

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

[protected] void QWizardPage::registerField(const QString &name, QWidget *widget, const char *property = nullptr, const char *changedSignal = nullptr)

Erstellt ein Feld namens name, das mit der angegebenen property der angegebenen widget verbunden ist. Von da an ist diese Eigenschaft über field() und setField() zugänglich.

Felder sind global für den gesamten Assistenten und machen es für jede einzelne Seite einfach, auf Informationen zuzugreifen, die von einer anderen Seite gespeichert wurden, ohne dass die gesamte Logik in QWizard abgelegt werden muss oder die Seiten explizit voneinander wissen müssen.

Wenn name mit einem Sternchen endet (*), 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. Dazu muss changedSignal angegeben werden, um QWizard anzuweisen, den im Pflichtfeld gespeicherten Wert erneut zu überprüfen.

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

Sie können QWizard::setDefaultProperty() verwenden, um Einträge zu dieser Tabelle hinzuzufügen oder bestehende Einträge zu überschreiben.

Um ein Feld als "gefüllt" zu betrachten, prüft QWizard einfach, ob der aktuelle Wert nicht dem ursprünglichen Wert entspricht (dem Wert, den es vor dem Aufruf von initializePage() hatte). Bei QLineEdit wird außerdem geprüft, ob hasAcceptableInput() den Wert true zurückgibt, um eine Validierung oder Maske zu berücksichtigen.

QWizardDer Mechanismus für Pflichtfelder dient der Bequemlichkeit. Er kann durch eine Neuimplementierung von QWizardPage::isComplete() umgangen werden.

Siehe auch field(), setField(), und QWizard::setDefaultProperty().

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

Setzt den Text auf der Schaltfläche which auf text auf dieser Seite.

Standardmäßig hängt der Text der Schaltflächen von QWizard::wizardStyle ab, kann aber mit QWizard::setButtonText() für den gesamten Assistenten neu definiert werden.

Siehe auch buttonText(), QWizard::setButtonText(), und QWizard::buttonText().

void QWizardPage::setCommitPage(bool commitPage)

Legt diese Seite als Festschreibungsseite fest, wenn commitPage wahr ist; andernfalls wird sie als normale Seite festgelegt.

Eine Festschreibungsseite ist eine Seite, die eine Aktion darstellt, die nicht durch Klicken auf Back oder Cancel rückgängig gemacht werden kann.

Eine Schaltfläche Commit ersetzt die Schaltfläche Next auf einer Festschreibungsseite. Ein Klick auf diese Schaltfläche ruft einfach QWizard::next() auf, genau wie ein Klick auf Next.

Bei einer Seite, die direkt von einer Commit-Seite aus aufgerufen wird, ist die Schaltfläche Back deaktiviert.

Siehe auch isCommitPage().

[protected] void QWizardPage::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. Sie ist gleichbedeutend mit dem Aufruf von wizard()->.setField(name, value).

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

void QWizardPage::setFinalPage(bool finalPage)

Legt explizit fest, dass diese Seite endgültig ist, wenn finalPage wahr ist.

Nach dem Aufruf von setFinalPage(true) gibt isFinalPage() true zurück und die Schaltfläche Finish ist sichtbar (und aktiviert, wenn isComplete() true zurückgibt).

Nach dem Aufruf von setFinalPage(false) gibt isFinalPage() true zurück, wenn nextId() -1 zurückgibt; andernfalls gibt es false zurück.

Siehe auch isFinalPage(), isComplete(), und QWizard::HaveFinishButtonOnEarlyPages.

void QWizardPage::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 mit QWizard::setPixmap() für den gesamten Assistenten festgelegt werden. In diesem Fall gelten sie für alle Seiten, die keine Pixmap angeben.

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

[virtual] bool QWizardPage::validatePage()

Diese virtuelle Funktion wird von QWizard::validateCurrentPage() 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 gibt true zurück.

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

Siehe auch QWizard::validateCurrentPage() und isComplete().

[protected] QWizard *QWizardPage::wizard() const

Gibt den mit dieser Seite verbundenen Assistenten zurück, oder nullptr, wenn diese Seite noch nicht in eine QWizard eingefügt wurde.

Siehe auch QWizard::addPage() und QWizard::setPage().

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