Wo kann ich die QWizard-Schaltfläche steuern?

9

Ich verwende Qt, und ich verwende ein QWizard-Objekt, das mehrere Seiten enthält. Wenn es um eine bestimmte Seite geht, möchte ich die "Weiter" -Schaltfläche zuerst ausblenden und sie nach dem Benutzer anzeigen lassen (z. B. durch Klicken auf einen Radiobutton ...)

Ich möchte einige benutzerdefinierte Steuerung des Assistenten vornehmen, wenn diese bestimmte Seite angezeigt wird. Die Frage ist, ich weiß, wie man den Knopf versteckt, aber ich weiß nicht, welche Funktion ich verwenden soll. Ich habe versucht, den QWizardPage-Konstruktor, die InitializePage-Funktion, die "Show" -Funktion, aber alle diese Funktion hat nicht funktioniert.

Wenn ich das Button-Steuerelement in den Wizard-Seitenkonstruktor einfüge, stürzt das Programm ab, da das Wizard-Objekt noch nicht da ist.

Wenn ich es in die Funktion initializePage einfüge, wird eine QWizard-Funktion die Schaltflächen nach der Funktion initializePage zurücksetzen, und alle benutzerdefinierten Einstellungen sind weg.

Und die Showfunktion scheint nicht überschrieben zu werden.

Ich kann wirklich nicht herausfinden, welche Funktion verwendbar ist. Gibt es irgendeine Funktion wie OnSetActive in MFC oder Load in JAVA? Welches wird aufgerufen, wenn eine Seite angezeigt wird?

    
Claire Huang 03.08.2010, 23:23
quelle

2 Antworten

9

Die beste Lösung ist wahrscheinlich die, die mit QWizardPage::registerField bereitgestellt wird. Hier können Sie Pflichtfelder / Optionsfelder / etc definieren. und die Schaltflächen Weiter und / oder Fertigstellen in Ihrem Assistenten sind nur aktiviert, wenn alle Pflichtfelder ausgefüllt / markiert sind.

Siehe Ссылка für ein Beispiel, das diese Funktionalität nutzt.

BEARBEITEN: QWizard::button bietet Zugriff auf die Schaltflächen im Assistenten. Hast du etwas wie myWizard->button(QWizard::NextButton)->setEnabled(false) versucht?

    
Greg S 04.08.2010 06:16
quelle
4

Um die nächste Schaltfläche zu deaktivieren, können Sie QWizardPage ableiten und isComplete() neu implementieren. Wenn es wahr zurückgibt, aktiviert QWizard die Schaltfläche. Die Unterklasse muss das Signal 'completeChanged ()' ausgeben, wenn Sie den Status von isComplete() ändern. Die Dokumentation für QWizardPage erklärt, wie es gemacht wird.

Möglicherweise können Sie auch

verwenden

parent->button(QWizard::NextButton)->setVisible(false)

, um die Schaltfläche auszublenden.

    
glennr 23.11.2010 03:01
quelle

Tags und Links