[gelöst] QWizardPage - initializePage für 1.Seite nur einmal

Alles rund um die Programmierung mit Qt
Antworten
Espresso
Beiträge: 49
Registriert: 10. September 2009 13:55

[gelöst] QWizardPage - initializePage für 1.Seite nur einmal

Beitrag von Espresso »

Hallo,

mein Wizard hat 2 Seiten,
für QWizardPage wird die Funktion initialzizePage für die erste Seite nur einmal aufgerufen, für die 2. Seite jedes Mal beim Seitenwechsel.
Das geht doch nicht.
Der muss doch jedes Mal über initializePage gehen.
Kennt jemand eine Erklärung hierfür? Und vor allem, was muss ich tun, damit jedes Mal initializePage() aufgerufen wird.

Danke für Tips,

Tom
Zuletzt geändert von Espresso am 23. September 2011 09:56, insgesamt 1-mal geändert.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QWizardPage - initializePage für 1.Seite nur einmal

Beitrag von franzf »

Was sagt die Doku zu QWizard::initializePage()?
This virtual function is called by QWizard to prepare page id just before it is shown either as a result of QWizard::restart() being called, or as a result of the user clicking Next.
Ein "back" ist halt kein "next" oder "restart". Das Verhalten ist demnach das Gewollte.
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Re: QWizardPage - initializePage für 1.Seite nur einmal

Beitrag von brax »

InitializePage wird nur beim click auf next auf der vorherigen Seite aufgerufen. Eigentlich soll diese Methode auch nur dafür sein, dass die nächste Page ihren Inhalt basierend auf den Eingaben auf der vorherigen Seite anpassen kann (falls nötig). Beim click auf back (was ja der einzige Weg ist, um auf die erste Seite zu kommen) wird es daher natürlich nicht aufgerufen. Das ist verständlich, denn an der vorherigen Seite hat sich ja dann nichts geändert (außer Du hast einen Wizard, wo die Seitenrefolge nicht wirklich den inhaltlichen Zusammenhängen entspricht - was für mich dem Verständnis eines Wizards widerspricht.) Wenn restart aufgerufen wird auf dem Wizard ist es was anderes, dann wird initializePage auch für die erste Seite nochmal aufgerufen.

Ich weiß nicht, was Du in initializePage jedes Mal neu machen möchtest. Du kannst aber in Deiner WizardPage auf das Signal currentIdChanged(int) vom Wizard reagieren und wenn die id die der betreffenden Seite ist, deine Initialisierung durchführen. Das wird dann immer aufgerufen, egal ob die Seite per back oder next aufgerufen wird.

edit: zu langsam...
Espresso
Beiträge: 49
Registriert: 10. September 2009 13:55

Re: QWizardPage - initializePage für 1.Seite nur einmal

Beitrag von Espresso »

Danke für den Tip mit currentIdChanged,
damit lässt sich jetzt prima ein extra CustomButton sichtbar unschalten
Gruß
Tom
Antworten