QWizard Class
Die Klasse QWizard bietet einen Rahmen für Assistenten. Mehr...
Kopfzeile: | #include <QWizard> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
Vererbungen: | QDialog |
Öffentliche Typen
enum | WizardButton { BackButton, NextButton, CommitButton, FinishButton, CancelButton, …, Stretch } |
enum | WizardOption { IndependentPages, IgnoreSubTitles, ExtendedWatermarkPixmap, NoDefaultButton, NoBackButtonOnStartPage, …, NoCancelButtonOnLastPage } |
flags | WizardOptions |
enum | WizardPixmap { WatermarkPixmap, LogoPixmap, BannerPixmap, BackgroundPixmap } |
enum | WizardStyle { ClassicStyle, ModernStyle, MacStyle, AeroStyle } |
Eigenschaften
|
Öffentliche Funktionen
QWizard(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | |
virtual | ~QWizard() |
int | addPage(QWizardPage *page) |
QAbstractButton * | button(QWizard::WizardButton which) const |
QString | buttonText(QWizard::WizardButton which) const |
int | currentId() const |
QWizardPage * | currentPage() const |
QVariant | field(const QString &name) const |
bool | hasVisitedPage(int id) const |
virtual int | nextId() const |
QWizard::WizardOptions | options() const |
QWizardPage * | page(int id) const |
QList<int> | pageIds() const |
QPixmap | pixmap(QWizard::WizardPixmap which) const |
void | removePage(int id) |
void | setButton(QWizard::WizardButton which, QAbstractButton *button) |
void | setButtonLayout(const QList<QWizard::WizardButton> &layout) |
void | setButtonText(QWizard::WizardButton which, const QString &text) |
void | setDefaultProperty(const char *className, const char *property, const char *changedSignal) |
void | setField(const QString &name, const QVariant &value) |
void | setOption(QWizard::WizardOption option, bool on = true) |
void | setOptions(QWizard::WizardOptions options) |
void | setPage(int id, QWizardPage *page) |
void | setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap) |
void | setSideWidget(QWidget *widget) |
void | setStartId(int id) |
void | setSubTitleFormat(Qt::TextFormat format) |
void | setTitleFormat(Qt::TextFormat format) |
void | setWizardStyle(QWizard::WizardStyle style) |
QWidget * | sideWidget() const |
int | startId() const |
Qt::TextFormat | subTitleFormat() const |
bool | testOption(QWizard::WizardOption option) const |
Qt::TextFormat | titleFormat() const |
virtual bool | validateCurrentPage() |
QList<int> | visitedIds() const |
QWizard::WizardStyle | wizardStyle() const |
Reimplementierte öffentliche Funktionen
virtual void | setVisible(bool visible) override |
virtual QSize | sizeHint() const override |
Öffentliche Slots
void | back() |
void | next() |
void | restart() |
void | setCurrentId(int id) |
Signale
void | currentIdChanged(int id) |
void | customButtonClicked(int which) |
void | helpRequested() |
void | pageAdded(int id) |
void | pageRemoved(int id) |
Geschützte Funktionen
virtual void | cleanupPage(int id) |
virtual void | initializePage(int id) |
Reimplementierte geschützte Funktionen
virtual void | done(int result) override |
virtual bool | event(QEvent *event) override |
virtual bool | nativeEvent(const QByteArray &eventType, void *message, qintptr *result) override |
virtual void | paintEvent(QPaintEvent *event) override |
virtual void | resizeEvent(QResizeEvent *event) override |
Detaillierte Beschreibung
Ein Wizard (unter macOS auch Assistent genannt) ist ein spezieller Typ eines Eingabedialogs, der aus einer Folge von Seiten besteht. Der Zweck eines Assistenten ist es, den Benutzer Schritt für Schritt durch einen Prozess zu führen. Assistenten sind nützlich für komplexe oder seltene Aufgaben, die für den Benutzer schwer zu erlernen sind.
QWizard erbt QDialog und stellt einen Assistenten dar. Jede Seite ist eine QWizardPage (eine QWidget Unterklasse). Um Ihre eigenen Assistenten zu erstellen, können Sie diese Klassen direkt verwenden, oder Sie können sie unterklassifizieren, um mehr Kontrolle zu haben.
Ein triviales Beispiel
Das folgende Beispiel zeigt, wie Sie Assistentenseiten erstellen und zu einem Assistenten hinzufügen können. Fortgeschrittenere Beispiele finden Sie unter Lizenz-Assistent.
QWizardPage *createIntroPage() { QWizardPage *page = new QWizardPage; page->setTitle("Introduction"); QLabel *label = new QLabel("This wizard will help you register your copy " "of Super Product Two."); label->setWordWrap(true); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(label); page->setLayout(layout); return page; } QWizardPage *createRegistrationPage() { ... } QWizardPage *createConclusionPage() { ... } int main(int argc, char *argv[]) { QApplication app(argc, argv); #ifndef QT_NO_TRANSLATION QString translatorFileName = QLatin1String("qtbase_"); translatorFileName += QLocale::system().name(); QTranslator *translator = new QTranslator(&app); if (translator->load(translatorFileName, QLibraryInfo::path(QLibraryInfo::TranslationsPath))) app.installTranslator(translator); #endif QWizard wizard; wizard.addPage(createIntroPage()); wizard.addPage(createRegistrationPage()); wizard.addPage(createConclusionPage()); wizard.setWindowTitle("Trivial Wizard"); wizard.show(); return app.exec(); }
Aussehen und Bedienung des Assistenten
QWizard unterstützt vier Wizard-Looks:
Sie können das zu verwendende Aussehen explizit mit setWizardStyle() festlegen (z.B. wenn Sie auf allen Plattformen das gleiche Aussehen wünschen).
Hinweis: AeroStyle ist nur auf einem Windows Vista-System mit aktiviertem Alpha-Compositing wirksam. ModernStyle wird als Fallback verwendet, wenn diese Bedingung nicht erfüllt ist.
Zusätzlich zum Stil des Assistenten gibt es mehrere Optionen, die das Aussehen des Assistenten steuern. Diese können mit setOption() oder setOptions() eingestellt werden. Zum Beispiel bewirkt HaveHelpButton, dass QWizard eine Schaltfläche Help zusammen mit den anderen Schaltflächen des Assistenten anzeigt.
Sie können sogar die Reihenfolge der Schaltflächen des Assistenten mit setButtonLayout() in eine beliebige Reihenfolge bringen, und Sie können bis zu drei benutzerdefinierte Schaltflächen (z. B. eine Print -Schaltfläche) zu der Schaltflächenreihe hinzufügen. Dies wird erreicht, indem Sie setButton() oder setButtonText() mit CustomButton1, CustomButton2 oder CustomButton3 aufrufen, um die Schaltfläche einzurichten, und indem Sie die Optionen HaveCustomButton1, HaveCustomButton2 oder HaveCustomButton3 aktivieren. Jedes Mal, wenn der Benutzer auf eine benutzerdefinierte Schaltfläche klickt, wird customButtonClicked() ausgegeben. Zum Beispiel:
wizard()->setButtonText(QWizard::CustomButton1, tr("&Print")); wizard()->setOption(QWizard::HaveCustomButton1, true); connect(wizard(), &QWizard::customButtonClicked, this, &ConclusionPage::printButtonClicked);
Elemente einer Assistentenseite
Assistenten bestehen aus einer Folge von QWizardPages. Es wird immer nur eine Seite angezeigt. Eine Seite hat die folgenden Eigenschaften:
- A title.
- A subTitle.
- Eine Reihe von Pixmaps, die je nach Stil des Assistenten berücksichtigt werden können oder 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 rendert, vorausgesetzt, sie sind alle vorhanden und ModernStyle wird verwendet:
Wenn ein subTitle gesetzt ist, zeigt QWizard es in einer Kopfzeile an. In diesem Fall werden auch BannerPixmap und LogoPixmap verwendet, um die Kopfzeile zu schmücken. Die WatermarkPixmap wird auf der linken Seite, unterhalb der Kopfzeile, angezeigt. Am unteren Rand befindet sich eine Reihe von Schaltflächen, mit denen der Benutzer durch die Seiten navigieren kann.
Die Seite selbst (das QWizardPage Widget) nimmt den Bereich zwischen der Kopfzeile, dem Wasserzeichen und der Schaltflächenreihe ein. In der Regel handelt es sich bei der Seite um ein QWizardPage, auf dem ein QGridLayout installiert ist, mit den üblichen untergeordneten Widgets (QLabels, QLineEdits, usw.).
Wenn der Stil des Assistenten MacStyle ist, sieht die Seite völlig anders aus:
Die Pixmaps für Wasserzeichen, Banner und Logo werden von MacStyle ignoriert. Wenn BackgroundPixmap eingestellt ist, wird es als Hintergrund für den Assistenten verwendet; andernfalls wird ein standardmäßiges "Assistenten"-Bild verwendet.
Der Titel und der Untertitel werden durch die Aufrufe QWizardPage::setTitle() und QWizardPage::setSubTitle() auf den einzelnen Seiten festgelegt. Sie können aus einfachem Text oder HTML bestehen (siehe titleFormat und subTitleFormat). Die Pixmaps können mit setPixmap() global für den gesamten Assistenten oder mit QWizardPage::setPixmap() für jede Seite einzeln festgelegt werden.
Registrieren und Verwenden von Feldern
In vielen Assistenten kann der Inhalt einer Seite die Standardwerte der Felder einer späteren Seite beeinflussen. Um die Kommunikation zwischen Seiten zu erleichtern, unterstützt QWizard einen "Feld"-Mechanismus, der es ermöglicht, ein Feld (z.B. QLineEdit) auf einer Seite zu registrieren und von jeder Seite aus auf seinen Wert zuzugreifen. Es ist auch möglich, Pflichtfelder anzugeben (d.h. Felder, die ausgefüllt werden müssen, bevor der Benutzer zur nächsten Seite wechseln kann).
Um ein Feld zu registrieren, rufen Sie QWizardPage::registerField() field auf. Zum Beispiel:
registerField("evaluate.name*", nameLineEdit); registerField("evaluate.email*", emailLineEdit);
Der obige Code registriert drei Felder, className
, baseClass
und qobjectMacro
, die mit drei untergeordneten Widgets verbunden sind. Das Sternchen (*
) neben className
kennzeichnet ein Pflichtfeld.
Die Felder jeder Seite sind von jeder anderen Seite aus zugänglich. Ein Beispiel:
void ConclusionPage::initializePage() { QString licenseText; if (wizard()->hasVisitedPage(LicenseWizard::Page_Evaluate)) { licenseText = tr("<u>Evaluation License Agreement:</u> " "You can use this software for 30 days and make one " "backup, but you are not allowed to distribute it."); } else if (wizard()->hasVisitedPage(LicenseWizard::Page_Details)) { const QString emailAddress = field("details.email").toString(); licenseText = tr("<u>First-Time License Agreement:</u> " "You can use this software subject to the license " "you will receive by email sent to %1.").arg(emailAddress); } else { licenseText = tr("<u>Upgrade License Agreement:</u> " "This software is licensed under the terms of your " "current license."); } bottomLabel->setText(licenseText); }
Hier rufen wir QWizardPage::field() auf, um auf den Inhalt des Feldes details.email
(das in DetailsPage
definiert wurde) zuzugreifen und es zur Initialisierung von ConclusionPage
zu verwenden. Der Inhalt des Feldes wird als QVariant zurückgegeben.
Wenn wir ein Feld mit QWizardPage::registerField() erstellen, übergeben wir einen eindeutigen Feldnamen und ein Widget. Wir können auch einen Qt-Eigenschaftsnamen und ein "changed"-Signal (ein Signal, das ausgegeben wird, wenn sich die Eigenschaft ändert) als drittes und viertes Argument angeben; dies ist jedoch für die gebräuchlichsten Qt Widgets wie QLineEdit, QCheckBox und QComboBox nicht notwendig, da QWizard weiß, nach welchen Eigenschaften zu suchen ist.
Wenn bei der Registrierung der Eigenschaft ein Sternchen (*
) an den Namen angehängt wird, ist das Feld ein Pflichtfeld. Wenn eine Seite Pflichtfelder hat, werden die Schaltflächen Next und/oder Finish nur aktiviert, wenn alle Pflichtfelder ausgefüllt sind.
Um ein Feld als "ausgefüllt" zu betrachten, prüft QWizard einfach, ob der aktuelle Wert des Feldes nicht gleich dem ursprünglichen Wert ist (dem Wert, den es beim Aufruf von initializePage() hatte). Bei den Unterklassen QLineEdit und QAbstractSpinBox prüft QWizard außerdem, ob hasAcceptableInput() den Wert true zurückgibt, um eine Validierung oder Maske zu berücksichtigen.
Der Pflichtfeld-Mechanismus von QWizard dient der Bequemlichkeit. Eine leistungsfähigere (aber auch umständlichere) Alternative ist die Neuimplementierung von QWizardPage::isComplete() und die Ausgabe des Signals QWizardPage::completeChanged(), sobald die Seite vollständig oder unvollständig wird.
Der aktivierte/deaktivierte Zustand der Schaltflächen Next und/oder Finish ist eine Möglichkeit, die Benutzereingaben zu überprüfen. Eine andere Möglichkeit besteht darin, validateCurrentPage() (oder QWizardPage::validatePage()) neu zu implementieren, um eine Überprüfung in letzter Minute durchzuführen (und eine Fehlermeldung anzuzeigen, wenn der Benutzer unvollständige oder ungültige Informationen eingegeben hat). Wenn die Funktion true
zurückgibt, wird die nächste Seite angezeigt (oder der Assistent wird beendet); andernfalls bleibt die aktuelle Seite bestehen.
Lineare Assistenten erstellen
Die meisten Assistenten sind linear aufgebaut, d. h. auf Seite 1 folgt Seite 2 und so weiter bis zur letzten Seite. Das Beispiel des Trivial Wizards ist ein solcher Assistent. Mit QWizard werden lineare Assistenten durch Instanziierung der QWizardPages und deren Einfügen mit addPage() erstellt. Standardmäßig werden die Seiten in der Reihenfolge angezeigt, in der sie eingefügt wurden. Ein Beispiel:
QWizard wizard; wizard.addPage(createIntroPage()); wizard.addPage(createRegistrationPage()); wizard.addPage(createConclusionPage());
Wenn eine Seite angezeigt werden soll, ruft QWizard initializePage() auf (die wiederum QWizardPage::initializePage() aufruft), um die Seite mit Standardwerten zu füllen. Standardmäßig tut diese Funktion nichts, aber sie kann neu implementiert werden, um den Inhalt der Seite auf der Grundlage der Felder anderer Seiten zu initialisieren (siehe example above).
Wenn der Benutzer Back drückt, wird cleanupPage() aufgerufen (was wiederum QWizardPage::cleanupPage() aufruft). Die Standardimplementierung setzt die Felder der Seite auf ihre ursprünglichen Werte zurück (die Werte, die sie hatten, bevor initializePage() aufgerufen wurde). Wenn Sie möchten, dass die Schaltfläche Back nicht destruktiv ist und die vom Benutzer eingegebenen Werte beibehält, aktivieren Sie einfach die Option IndependentPages.
Nicht-lineare Assistenten erstellen
Einige Assistenten sind insofern komplexer, als sie auf der Grundlage der vom Benutzer bereitgestellten Informationen verschiedene Durchlaufpfade zulassen. Das Beispiel des Lizenzassistenten veranschaulicht dies. Es bietet mehrere Assistentenseiten; je nachdem, welche Optionen ausgewählt werden, kann der Benutzer verschiedene Seiten erreichen.
In komplexen Assistenten werden die Seiten durch IDs identifiziert. Diese IDs werden typischerweise über ein Enum definiert. Ein Beispiel:
class LicenseWizard : public QWizard { ... enum { Page_Intro, Page_Evaluate, Page_Register, Page_Details, Page_Conclusion }; ... };
Die Seiten werden mit setPage() eingefügt, das eine ID und eine Instanz von QWizardPage (oder einer Unterklasse) annimmt:
LicenseWizard::LicenseWizard(QWidget *parent) : QWizard(parent) { setPage(Page_Intro, new IntroPage); setPage(Page_Evaluate, new EvaluatePage); setPage(Page_Register, new RegisterPage); setPage(Page_Details, new DetailsPage); setPage(Page_Conclusion, new ConclusionPage); ... }
Standardmäßig werden die Seiten in aufsteigender ID-Reihenfolge angezeigt. Um eine dynamische Reihenfolge zu erreichen, die von den vom Benutzer gewählten Optionen abhängt, müssen wir QWizardPage::nextId() neu implementieren. Ein Beispiel:
int IntroPage::nextId() const { if (evaluateRadioButton->isChecked()) { return LicenseWizard::Page_Evaluate; } else { return LicenseWizard::Page_Register; } } int EvaluatePage::nextId() const { return LicenseWizard::Page_Conclusion; } int RegisterPage::nextId() const { if (upgradeKeyLineEdit->text().isEmpty()) { return LicenseWizard::Page_Details; } else { return LicenseWizard::Page_Conclusion; } } int DetailsPage::nextId() const { return LicenseWizard::Page_Conclusion; } int ConclusionPage::nextId() const { return -1; }
Es wäre auch möglich, die gesamte Logik an einer Stelle in einer QWizard::nextId()-Reimplementierung unterzubringen. Ein Beispiel:
int LicenseWizard::nextId() const { switch (currentId()) { case Page_Intro: if (field("intro.evaluate").toBool()) { return Page_Evaluate; } else { return Page_Register; } case Page_Evaluate: return Page_Conclusion; case Page_Register: if (field("register.upgradeKey").toString().isEmpty()) { return Page_Details; } else { return Page_Conclusion; } case Page_Details: return Page_Conclusion; case Page_Conclusion: default: return -1; } }
Um auf einer anderen Seite als der Seite mit der niedrigsten ID zu beginnen, rufen Sie setStartId() auf.
Um zu testen, ob eine Seite bereits besucht wurde oder nicht, rufen Sie hasVisitedPage() auf. Ein Beispiel:
void ConclusionPage::initializePage() { QString licenseText; if (wizard()->hasVisitedPage(LicenseWizard::Page_Evaluate)) { licenseText = tr("<u>Evaluation License Agreement:</u> " "You can use this software for 30 days and make one " "backup, but you are not allowed to distribute it."); } else if (wizard()->hasVisitedPage(LicenseWizard::Page_Details)) { const QString emailAddress = field("details.email").toString(); licenseText = tr("<u>First-Time License Agreement:</u> " "You can use this software subject to the license " "you will receive by email sent to %1.").arg(emailAddress); } else { licenseText = tr("<u>Upgrade License Agreement:</u> " "This software is licensed under the terms of your " "current license."); } bottomLabel->setText(licenseText); }
Siehe auch QWizardPage, Trivial Wizard Example und License Wizard Example.
Dokumentation der Mitgliedstypen
enum QWizard::WizardButton
Diese Aufzählung spezifiziert die Schaltflächen in einem Assistenten.
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() nützlich:
Konstante | Wert | Beschreibung |
---|---|---|
QWizard::Stretch | 9 | Eine horizontale Ausdehnung im Schaltflächenlayout |
Siehe auch setButton(), setButtonText(), setButtonLayout(), und customButtonClicked().
enum QWizard::WizardOption
flags QWizard::WizardOptions
Diese Aufzählung spezifiziert verschiedene Optionen, die das Aussehen eines Wizards beeinflussen.
Konstante | Wert | Beschreibung |
---|---|---|
QWizard::IndependentPages | 0x00000001 | Die Seiten sind unabhängig voneinander (d.h., sie leiten keine Werte voneinander ab). |
QWizard::IgnoreSubTitles | 0x00000002 | Zeigt keine Untertitel an, auch wenn sie eingestellt sind. |
QWizard::ExtendedWatermarkPixmap | 0x00000004 | Erweitern Sie WatermarkPixmap bis an den Rand des Fensters. |
QWizard::NoDefaultButton | 0x00000008 | Machen Sie die Schaltfläche Next oder Finish nicht zum default button des Dialogs. |
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 | Zeigen Sie die (deaktivierte) Schaltfläche Next auf der letzten Seite an. |
QWizard::HaveFinishButtonOnEarlyPages | 0x00000100 | Zeigen Sie die (deaktivierte) Schaltfläche Finish auf nicht-letzten Seiten an. |
QWizard::NoCancelButton | 0x00000200 | Zeigen Sie die Schaltfläche Cancel nicht an. |
QWizard::CancelButtonOnLeft | 0x00000400 | Platzieren Sie die Schaltfläche Cancel links von Back (und nicht rechts von Finish oder Next). |
QWizard::HaveHelpButton | 0x00000800 | Zeigen Sie die Schaltfläche Help an. |
QWizard::HelpButtonOnRight | 0x00001000 | Legen Sie die Schaltfläche Help ganz rechts in das Schaltflächenlayout (statt ganz links). |
QWizard::HaveCustomButton1 | 0x00002000 | Zeigen Sie die erste benutzerdefinierte Schaltfläche (CustomButton1). |
QWizard::HaveCustomButton2 | 0x00004000 | Zeigen Sie die zweite benutzerdefinierte Schaltfläche (CustomButton2). |
QWizard::HaveCustomButton3 | 0x00008000 | Zeigen Sie die dritte benutzerdefinierte Schaltfläche (CustomButton3). |
QWizard::NoCancelButtonOnLastPage | 0x00010000 | Zeigen Sie die Schaltfläche Cancel nicht auf der letzten Seite an. |
Der Typ WizardOptions ist ein Typedef für QFlags<WizardOption>. Er speichert eine ODER-Kombination von WizardOption-Werten.
Siehe auch setOptions(), setOption(), und testOption().
enum QWizard::WizardPixmap
Diese Aufzählung gibt die Pixmaps an, die mit einer Seite verknüpft werden können.
Konstante | Wert | Beschreibung |
---|---|---|
QWizard::WatermarkPixmap | 0 | Die große Pixmap auf der linken Seite einer ClassicStyle oder ModernStyle Seite |
QWizard::LogoPixmap | 1 | Die kleine Pixelgrafik auf der rechten Seite eines ClassicStyle oder ModernStyle Seitenkopfes |
QWizard::BannerPixmap | 2 | Die Pixelgrafik, die den Hintergrund eines ModernStyle Seitenkopfes einnimmt |
QWizard::BackgroundPixmap | 3 | Die Pixelgrafik, die den Hintergrund eines MacStyle -Assistenten einnimmt |
Siehe auch setPixmap(), QWizardPage::setPixmap(), und Elements of a Wizard Page.
enum QWizard::WizardStyle
Diese Aufzählung spezifiziert die verschiedenen Looks, die von QWizard unterstützt werden.
Konstante | Wert | Beschreibung |
---|---|---|
QWizard::ClassicStyle | 0 | Klassisches Windows-Aussehen |
QWizard::ModernStyle | 1 | Modernes Windows-Aussehen |
QWizard::MacStyle | 2 | macOS-Look |
QWizard::AeroStyle | 3 | Windows-Aero-Look |
Siehe auch setWizardStyle(), WizardOption, und Wizard Look and Feel.
Dokumentation der Eigenschaften
currentId : int
Diese Eigenschaft enthält die ID der aktuellen Seite
Diese Eigenschaft kann nicht direkt gesetzt werden. Um die aktuelle Seite zu ändern, rufen Sie next(), back(), oder restart() auf.
Standardmäßig hat diese Eigenschaft den Wert -1, was bedeutet, dass derzeit keine Seite angezeigt wird.
Zugriffsfunktionen:
int | currentId() const |
void | setCurrentId(int id) |
Benachrichtigungssignal:
void | currentIdChanged(int id) |
Siehe auch currentPage().
options : WizardOptions
Diese Eigenschaft enthält die verschiedenen Optionen, die das Aussehen des Assistenten beeinflussen
Standardmäßig sind die folgenden Optionen eingestellt (abhängig von der Plattform):
- Windows: HelpButtonOnRight.
- macOS: NoDefaultButton und NoCancelButton.
- X11 und QWS (Qt for 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 sie standardmäßig auf die niedrigste Seiten-ID in diesem Assistenten gesetzt, oder auf -1, wenn noch keine Seite eingefügt wurde.
Zugriffsfunktionen:
int | startId() const |
void | setStartId(int id) |
Siehe auch restart() und nextId().
subTitleFormat : Qt::TextFormat
Diese Eigenschaft enthält das von den Seitenuntertiteln verwendete Textformat
Das Standardformat ist Qt::AutoText.
Zugriffsfunktionen:
Qt::TextFormat | subTitleFormat() const |
void | setSubTitleFormat(Qt::TextFormat format) |
Siehe auch QWizardPage::title und titleFormat.
titleFormat : Qt::TextFormat
Diese Eigenschaft enthält das von Seitentiteln verwendete Textformat
Das Standardformat ist Qt::AutoText.
Zugriffsfunktionen:
Qt::TextFormat | titleFormat() const |
void | setTitleFormat(Qt::TextFormat format) |
Siehe auch QWizardPage::title und subTitleFormat.
wizardStyle : WizardStyle
Diese Eigenschaft legt das Aussehen des Assistenten fest
Standardmäßig verwendet QWizard auf einem Windows Vista-System mit aktiviertem Alpha-Compositing AeroStyle, unabhängig vom aktuellen Widget-Stil. Ist dies nicht der Fall, hängt der Standardstil des Assistenten wie folgt vom aktuellen Widgetstil ab: MacStyle ist der Standard, wenn der aktuelle Widgetstil QMacStyle ist, ModernStyle ist der Standard, wenn der aktuelle Widgetstil QWindowsStyle ist, und ClassicStyle ist der Standard in allen anderen Fällen.
Zugriffsfunktionen:
QWizard::WizardStyle | wizardStyle() const |
void | setWizardStyle(QWizard::WizardStyle style) |
Siehe auch Wizard Look and Feel und options.
Dokumentation der Mitgliedsfunktionen
[explicit]
QWizard::QWizard(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
Konstruiert einen Assistenten mit dem angegebenen parent und dem Fenster flags.
Siehe auch parent() und windowFlags().
[virtual noexcept]
QWizard::~QWizard()
Zerstört den Assistenten und seine Seiten und gibt alle zugewiesenen Ressourcen frei.
int QWizard::addPage(QWizardPage *page)
Fügt die angegebene page zum Assistenten hinzu und gibt die ID der Seite zurück.
Die ID ist garantiert größer als jede andere ID in der QWizard bisher.
Siehe auch setPage(), page(), und pageAdded().
[slot]
void QWizard::back()
Kehrt zur vorherigen Seite zurück.
Dies entspricht dem Drücken der Taste Back.
Siehe auch next(), accept(), reject(), und restart().
QAbstractButton *QWizard::button(QWizard::WizardButton which) const
Gibt die Schaltfläche zurück, die der Rolle which entspricht.
Siehe auch setButton() und setButtonText().
QString QWizard::buttonText(QWizard::WizardButton which) const
Gibt den Text der Schaltfläche which zurück.
Wenn ein Text mit setButtonText() festgelegt wurde, wird dieser Text zurückgegeben.
Standardmäßig hängt der Text auf den Schaltflächen vom wizardStyle ab. Unter macOS heißt die Schaltfläche Next beispielsweise Continue.
Siehe auch button(), setButton(), setButtonText(), QWizardPage::buttonText(), und QWizardPage::setButtonText().
[virtual protected]
void QWizard::cleanupPage(int id)
Diese virtuelle Funktion wird von QWizard aufgerufen, um die Seite id aufzuräumen, kurz bevor der Benutzer sie durch Anklicken von Back verlässt (es sei denn, die Option QWizard::IndependentPages ist gesetzt).
Die Standardimplementierung ruft QWizardPage::cleanupPage() auf page(id) auf.
Siehe auch QWizardPage::cleanupPage() und initializePage().
[signal]
void QWizard::currentIdChanged(int id)
Dieses Signal wird ausgegeben, wenn die aktuelle Seite wechselt, mit der neuen aktuellen id.
Hinweis: Benachrichtigungssignal für die Eigenschaft currentId.
Siehe auch currentId() und currentPage().
QWizardPage *QWizard::currentPage() const
Gibt einen Zeiger auf die aktuelle Seite zurück, oder nullptr
, wenn es keine aktuelle Seite gibt (z. B. bevor der Assistent angezeigt wird).
Dies ist gleichbedeutend mit dem Aufruf von page(currentId()).
Siehe auch page(), currentId(), und restart().
[signal]
void QWizard::customButtonClicked(int which)
Dieses Signal wird ausgegeben, wenn der Benutzer auf eine benutzerdefinierte Schaltfläche klickt. which kann CustomButton1, CustomButton2 oder CustomButton3 sein.
Standardmäßig wird keine benutzerdefinierte Schaltfläche angezeigt. Rufen Sie setOption() mit HaveCustomButton1, HaveCustomButton2 oder HaveCustomButton3 auf, um eine zu haben, und verwenden Sie setButtonText() oder setButton(), um sie zu konfigurieren.
Siehe auch helpRequested().
[override virtual protected]
void QWizard::done(int result)
Reimplements: QDialog::done(int r).
[override virtual protected]
bool QWizard::event(QEvent *event)
Reimplements: QWidget::event(QEvent *Event).
QVariant QWizard::field(const QString &name) const
Gibt den Wert des Feldes mit dem Namen name zurück.
Diese Funktion kann für den Zugriff auf Felder auf jeder Seite des Assistenten verwendet werden.
Siehe auch QWizardPage::registerField(), QWizardPage::field(), und setField().
bool QWizard::hasVisitedPage(int id) const
Gibt true
zurück, wenn der Seitenverlauf die Seite id enthält; andernfalls wird false
zurückgegeben.
Durch Drücken von Back wird die aktuelle Seite wieder als "unbesucht" markiert.
Siehe auch visitedIds().
[signal]
void QWizard::helpRequested()
Dieses Signal wird ausgegeben, wenn der Benutzer auf die Schaltfläche Help klickt.
Standardmäßig wird keine Schaltfläche Help angezeigt. Rufen Sie setOption(HaveHelpButton, true) auf, um eine zu erhalten.
Beispiel:
LicenseWizard::LicenseWizard(QWidget *parent) : QWizard(parent) { ... setOption(HaveHelpButton, true); connect(this, &QWizard::helpRequested, this, &LicenseWizard::showHelp); ... } void LicenseWizard::showHelp() { static QString lastHelpMessage; QString message; switch (currentId()) { case Page_Intro: message = tr("The decision you make here will affect which page you " "get to see next."); break; ... default: message = tr("This help is likely not to be of any help."); } QMessageBox::information(this, tr("License Wizard Help"), message); }
Siehe auch customButtonClicked().
[virtual protected]
void QWizard::initializePage(int id)
Diese virtuelle Funktion wird von QWizard aufgerufen, um die Seite id vorzubereiten, kurz bevor sie entweder durch den Aufruf von QWizard::restart() oder durch das Anklicken von Next angezeigt wird. (Wenn jedoch die Option QWizard::IndependentPages gesetzt ist, wird diese Funktion nur beim ersten Anzeigen der Seite aufgerufen).
Durch die Neuimplementierung dieser Funktion können Sie sicherstellen, dass die Felder der Seite auf der Grundlage der Felder früherer Seiten richtig initialisiert werden.
Die Standardimplementierung ruft QWizardPage::initializePage() auf page(id) auf.
Siehe auch QWizardPage::initializePage() und cleanupPage().
[override virtual protected]
bool QWizard::nativeEvent(const QByteArray &eventType, void *message, qintptr *result)
Reimplements: QWidget::nativeEvent(const QByteArray &eventType, void *message, qintptr *result).
[slot]
void QWizard::next()
Wechselt zur nächsten Seite.
Dies entspricht dem Drücken der Taste Next oder Commit.
Siehe auch nextId(), back(), accept(), reject(), und restart().
[virtual]
int QWizard::nextId() const
Diese virtuelle Funktion wird von QWizard aufgerufen, um herauszufinden, welche Seite angezeigt werden soll, wenn der Benutzer auf die Schaltfläche Next klickt.
Der Rückgabewert ist die ID der nächsten Seite, oder -1, wenn keine Seite folgt.
Die Standardimplementierung ruft QWizardPage::nextId() auf currentPage() auf.
Wenn Sie diese Funktion neu implementieren, können Sie eine dynamische Seitenreihenfolge festlegen.
Siehe auch QWizardPage::nextId() und currentPage().
QWizardPage *QWizard::page(int id) const
Gibt die Seite mit dem angegebenen id zurück, oder nullptr
, wenn es keine solche Seite gibt.
Siehe auch addPage() und setPage().
[signal]
void QWizard::pageAdded(int id)
Dieses Signal wird ausgegeben, wenn eine Seite zum Assistenten hinzugefügt wird. Die id der Seite wird als Parameter übergeben.
Siehe auch addPage(), setPage(), und startId().
QList<int> QWizard::pageIds() const
Gibt die Liste der Seiten-IDs zurück.
[signal]
void QWizard::pageRemoved(int id)
Dieses Signal wird ausgegeben, wenn eine Seite aus dem Assistenten entfernt wird. Die id der Seite wird als Parameter übergeben.
Siehe auch removePage() und startId().
[override virtual protected]
void QWizard::paintEvent(QPaintEvent *event)
Reimplements: QWidget::paintEvent(QPaintEvent *event).
QPixmap QWizard::pixmap(QWizard::WizardPixmap which) const
Gibt die für die Rolle which eingestellte Pixmap zurück.
Standardmäßig ist die einzige Pixmap, die eingestellt ist, die BackgroundPixmap unter macOS.
Siehe auch setPixmap(), QWizardPage::pixmap(), und Elements of a Wizard Page.
void QWizard::removePage(int id)
Entfernt die Seite mit der angegebenen id. cleanupPage() wird bei Bedarf aufgerufen.
Hinweis: Das Entfernen einer Seite kann den Wert der Eigenschaft startId beeinflussen.
Siehe auch addPage(), setPage(), pageRemoved(), und startId().
[override virtual protected]
void QWizard::resizeEvent(QResizeEvent *event)
Reimplements: QDialog::resizeEvent(QResizeEvent *).
[slot]
void QWizard::restart()
Startet den Assistenten auf der Startseite neu. Diese Funktion wird automatisch aufgerufen, wenn der Assistent angezeigt wird.
Siehe auch startId().
void QWizard::setButton(QWizard::WizardButton which, QAbstractButton *button)
Setzt die Schaltfläche, die der Rolle which bis button entspricht.
Um dem Assistenten weitere Schaltflächen hinzuzufügen (z. B. eine Schaltfläche Print ), kann man setButton() mit CustomButton1 bis CustomButton3 aufrufen und die Schaltflächen mit den Optionen HaveCustomButton1 bis HaveCustomButton3 sichtbar machen.
Siehe auch button(), setButtonText(), setButtonLayout(), und options.
void QWizard::setButtonLayout(const QList<QWizard::WizardButton> &layout)
Legt die Reihenfolge fest, in der die Schaltflächen auf layout angezeigt werden, wobei layout eine Liste von WizardButtonist.
Das Standardlayout hängt von den eingestellten Optionen ab (z. B. ob HelpButtonOnRight). Sie können diese Funktion aufrufen, wenn Sie mehr Kontrolle über das Layout der Schaltflächen benötigen, als es options bereits bietet.
Sie können horizontale Ausdehnungen im Layout mit Stretch festlegen.
Beispiel:
MyWizard::MyWizard(QWidget *parent) : QWizard(parent) { ... QList<QWizard::WizardButton> layout; layout << QWizard::Stretch << QWizard::BackButton << QWizard::CancelButton << QWizard::NextButton << QWizard::FinishButton; setButtonLayout(layout); ... }
Siehe auch setButton(), setButtonText(), und setOptions().
void QWizard::setButtonText(QWizard::WizardButton which, const QString &text)
Legt den Text der Schaltfläche which auf text fest.
Standardmäßig hängt der Text der Schaltflächen vom wizardStyle ab. Unter macOS heißt die Schaltfläche Next beispielsweise Continue.
Um dem Assistenten weitere Schaltflächen hinzuzufügen (z. B. eine Schaltfläche Print ), besteht eine Möglichkeit darin, setButtonText() mit CustomButton1, CustomButton2 oder CustomButton3 aufzurufen, um deren Text festzulegen, und die Schaltflächen mit den Optionen HaveCustomButton1, HaveCustomButton2 und/oder HaveCustomButton3 sichtbar zu machen.
Schaltflächentexte können auch mit QWizardPage::setButtonText() seitenweise gesetzt werden.
Siehe auch buttonText(), setButton(), button(), setButtonLayout(), setOptions(), und QWizardPage::setButtonText().
[slot]
void QWizard::setCurrentId(int id)
Setzt currentId auf id, ohne die Seiten zwischen currentId und id zu besuchen.
Kehrt ohne Seitenwechsel zurück, wenn
- der Assistent keine Seiten enthält
- die aktuelle Seite ungültig ist
- die angegebene Seite ist gleich currentId()
- die angegebene Seite liegt außerhalb des Bereichs
Hinweis: Wenn Seiten vorwärts übersprungen wurden und id gleich 0 ist, wird der Verlauf der Seitenbesuche gelöscht
Hinweis: Setter-Funktion für die Eigenschaft currentId.
Siehe auch currentId().
void QWizard::setDefaultProperty(const char *className, const char *property, const char *changedSignal)
Setzt die Standardeigenschaft für className auf property und das zugehörige Änderungssignal auf changedSignal.
Die Standardeigenschaft wird verwendet, wenn eine Instanz von className (oder einer ihrer Unterklassen) an QWizardPage::registerField() übergeben wird und keine Eigenschaft angegeben ist.
QWizard kennt die gebräuchlichsten Qt Widgets. Für diese (oder ihre Unterklassen) müssen Sie keine property oder changedSignal angeben. Die folgende Tabelle listet diese Widgets auf:
Widget | Eigenschaft | Änderungsbenachrichtigung Signal |
---|---|---|
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 mit der Bezeichnung name auf value.
Diese Funktion kann verwendet werden, um Felder auf jeder Seite des Assistenten zu setzen.
Siehe auch QWizardPage::registerField(), QWizardPage::setField(), und field().
void QWizard::setOption(QWizard::WizardOption option, bool on = true)
Setzt das angegebene option auf aktiv, wenn on wahr ist; andernfalls wird das angegebene option gelöscht.
Siehe auch options, testOption(), und setWizardStyle().
void QWizard::setPage(int id, QWizardPage *page)
Fügt die angegebene page zum Assistenten mit der angegebenen id hinzu.
Hinweis: Das Hinzufügen einer Seite kann den Wert der Eigenschaft startId beeinflussen, falls diese nicht explizit gesetzt wurde.
Siehe auch addPage(), page(), und pageAdded().
void QWizard::setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap)
Setzt die Pixmap für die Rolle which auf pixmap.
Die Pixmaps werden von QWizard verwendet, wenn eine Seite angezeigt wird. Welche Pixmaps tatsächlich verwendet werden, hängt von der wizard style ab.
Pixmaps können auch für eine bestimmte Seite mit QWizardPage::setPixmap() gesetzt werden.
Siehe auch pixmap(), QWizardPage::setPixmap(), und Elements of a Wizard Page.
void QWizard::setSideWidget(QWidget *widget)
Legt fest, dass das angegebene widget auf der linken Seite des Assistenten angezeigt werden soll. Bei Stilen, die das WatermarkPixmap verwenden (ClassicStyle und ModernStyle), wird das Seiten-Widget über dem Wasserzeichen angezeigt, bei anderen Stilen oder wenn das Wasserzeichen nicht vorhanden ist, wird das Seiten-Widget auf der linken Seite des Assistenten angezeigt.
Bei der Angabe nullptr
wird kein Seiten-Widget angezeigt.
Wenn widget nicht nullptr
ist, wird es vom Assistenten repariert.
Alle vorherigen Seiten-Widgets werden ausgeblendet.
Sie können setSideWidget() mit demselben Widget zu verschiedenen Zeitpunkten aufrufen.
Alle hier gesetzten Widgets werden vom Assistenten gelöscht, wenn er zerstört wird, es sei denn, Sie reparieren das Widget separat, nachdem Sie ein anderes Seiten-Widget gesetzt haben (oder nullptr
).
Standardmäßig ist kein Seiten-Widget vorhanden.
Siehe auch sideWidget().
[override virtual]
void QWizard::setVisible(bool visible)
Reimplements: QDialog::setVisible(bool visible).
QWidget *QWizard::sideWidget() const
Gibt das Widget auf der linken Seite des Assistenten oder nullptr
zurück.
Standardmäßig ist kein Seiten-Widget vorhanden.
Siehe auch setSideWidget().
[override virtual]
QSize QWizard::sizeHint() const
Reimplements: QDialog::sizeHint() const.
bool QWizard::testOption(QWizard::WizardOption option) const
Gibt true
zurück, wenn die angegebene option aktiviert ist; andernfalls wird false zurückgegeben.
Siehe auch options, setOption(), und setWizardStyle().
[virtual]
bool QWizard::validateCurrentPage()
Diese virtuelle Funktion wird von QWizard aufgerufen, wenn der Benutzer auf Next oder Finish klickt, um eine Überprüfung in letzter Minute vorzunehmen. Wenn sie true
zurückgibt, wird die nächste Seite angezeigt (oder der Assistent beendet); andernfalls bleibt die aktuelle Seite bestehen.
Die Standardimplementierung ruft QWizardPage::validatePage() auf currentPage() auf.
Wenn möglich, ist es normalerweise besser, die Schaltfläche Next oder Finish zu deaktivieren (durch Angabe von mandatory fields oder durch Neuimplementierung von QWizardPage::isComplete()), als validateCurrentPage() neu zu implementieren.
Siehe auch QWizardPage::validatePage() und currentPage().
QList<int> QWizard::visitedIds() const
Gibt die Liste der IDs der besuchten Seiten zurück, und zwar in der Reihenfolge, in der die Seiten besucht wurden.
Siehe auch hasVisitedPage().
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.