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:
- Ein „ title “.
- Ein „ subTitle “.
- Eine Reihe von Pixmaps, die je nach Stil des Assistenten berücksichtigt werden können oder auch nicht:
- WatermarkPixmap (verwendet von ClassicStyle und ModernStyle)
- BannerPixmap (verwendet von ModernStyle)
- LogoPixmap (verwendet von ClassicStyle und ModernStyle)
- BackgroundPixmap (verwendet von MacStyle)
Das folgende Diagramm zeigt, wie QWizard diese Attribute darstellt, vorausgesetzt, sie sind alle vorhanden und ModernStyle wird verwendet:

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:

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.

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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QWizard::BackButton | 0 | Die Schaltfläche „ Back “ (Go Back unter macOS) |
QWizard::NextButton | 1 | Die Schaltfläche „ Next “ (Continue unter macOS) |
QWizard::CommitButton | 2 | Die Schaltfläche „ Commit “ |
QWizard::FinishButton | 3 | Die Schaltfläche „ Finish “ (Done unter macOS) |
QWizard::CancelButton | 4 | Die Schaltfläche „ Cancel “ (siehe auch NoCancelButton) |
QWizard::HelpButton | 5 | Die Schaltfläche „ Help “ (siehe auch HaveHelpButton) |
QWizard::CustomButton1 | 6 | Die erste benutzerdefinierte Schaltfläche (siehe auch HaveCustomButton1) |
QWizard::CustomButton2 | 7 | Die zweite benutzerdefinierte Schaltfläche (siehe auch HaveCustomButton2) |
QWizard::CustomButton3 | 8 | Die dritte benutzerdefinierte Schaltfläche (siehe auch HaveCustomButton3) |
Der folgende Wert ist nur beim Aufruf von ` setButtonLayout()` von Bedeutung:
| Konstante | Wert | Beschreibung |
|---|---|---|
QWizard::Stretch | 9 | Eine 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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QWizard::IndependentPages | 0x00000001 | Die Seiten sind voneinander unabhängig (d. h., sie leiten keine Werte voneinander ab). |
QWizard::IgnoreSubTitles | 0x00000002 | Es werden keine Untertitel angezeigt, auch wenn diese festgelegt sind. |
QWizard::ExtendedWatermarkPixmap | 0x00000004 | Erweitere alle „ WatermarkPixmap “-Elemente bis ganz an den Rand des Fensters. |
QWizard::NoDefaultButton | 0x00000008 | Die Schaltfläche „ Next “ oder „ Finish “ darf nicht die „ default button “ des Dialogfelds sein. |
QWizard::NoBackButtonOnStartPage | 0x00000010 | Zeigen Sie die Schaltfläche „ Back “ nicht auf der Startseite an. |
QWizard::NoBackButtonOnLastPage | 0x00000020 | Zeigen Sie die Schaltfläche „ Back “ nicht auf der letzten Seite an. |
QWizard::DisabledBackButtonOnLastPage | 0x00000040 | Deaktivieren Sie die Schaltfläche „ Back “ auf der letzten Seite. |
QWizard::HaveNextButtonOnLastPage | 0x00000080 | Zeige die (deaktivierte) Schaltfläche „ Next “ auf der letzten Seite an. |
QWizard::HaveFinishButtonOnEarlyPages | 0x00000100 | Zeige die (deaktivierte) Schaltfläche „ Finish “ auf Seiten an, die nicht die letzte Seite sind. |
QWizard::NoCancelButton | 0x00000200 | Die Schaltfläche „ Cancel “ nicht anzeigen. |
QWizard::CancelButtonOnLeft | 0x00000400 | Die Schaltfläche „ Cancel “ links neben „ Back “ platzieren (anstatt rechts neben „ Finish “ oder „ Next “). |
QWizard::HaveHelpButton | 0x00000800 | Zeigen Sie die Schaltfläche „ Help “ an. |
QWizard::HelpButtonOnRight | 0x00001000 | Platzieren Sie die Schaltfläche „ Help “ ganz rechts im Schaltflächenlayout (statt ganz links). |
QWizard::HaveCustomButton1 | 0x00002000 | Zeigen Sie die erste benutzerdefinierte Schaltfläche an (CustomButton1). |
QWizard::HaveCustomButton2 | 0x00004000 | Zeigen Sie die zweite benutzerdefinierte Schaltfläche an (CustomButton2). |
QWizard::HaveCustomButton3 | 0x00008000 | Zeigen Sie die dritte benutzerdefinierte Schaltfläche an (CustomButton3). |
QWizard::NoCancelButtonOnLastPage | 0x00010000 | Die Schaltfläche „ Cancel “ auf der letzten Seite nicht anzeigen. |
QWizard::StretchBanner | 0x00020000 | Falls 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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QWizard::WatermarkPixmap | 0 | Die hohe Pixmap auf der linken Seite einer Seite unter ClassicStyle oder ModernStyle |
QWizard::LogoPixmap | 1 | Die kleine Pixmap auf der rechten Seite einer ClassicStyle - oder ModernStyle -Seitenkopfzeile |
QWizard::BannerPixmap | 2 | Das Pixmap, das den Hintergrund der Kopfzeile einer Seite unter ModernStyle bildet |
QWizard::BackgroundPixmap | 3 | Das 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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QWizard::ClassicStyle | 0 | Klassisches Windows-Design |
QWizard::ModernStyle | 1 | Modernes Windows-Design |
QWizard::MacStyle | 2 | macOS-Design |
QWizard::AeroStyle | 3 | Windows-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):
- Windows: HelpButtonOnRight.
- macOS: „ NoDefaultButton “ und „ NoCancelButton “.
- X11 und QWS (Qt für Embedded Linux): keine.
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:
| Widget | Eigenschaft | Signal zur Änderungsbenachrichtigung |
|---|---|---|
| QAbstractButton | bool checked | toggled() |
| QAbstractSlider | int value | valueChanged() |
| QComboBox | int currentIndex | currentIndexChanged() |
| QDateTimeEdit | QDateTime dateTime | dateTimeChanged() |
| QLineEdit | QString text | textChanged() |
| QListWidget | int currentRow | currentRowChanged() |
| QSpinBox | int value | valueChanged() |
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.







