2010-07-24 11 views
5

Ich verwende eine QWizard-Klasse, die mehrere QWizardPage enthält. Bei einigen Seiten muss ich etwas tun, wenn ich auf "Weiter" klicke.Wie kann ich den "nächsten" Slot in einem QWizard überschreiben?

Ich habe versucht, den next Slot in meiner QWizard-Klasse zu überschreiben; Es scheint jedoch, dass dies nicht funktioniert. Das Programm ging immer noch in den ursprünglichen Slot next in der übergeordneten QWizard-Klasse statt in den von mir implementierten.

Liegt das daran, dass dieser next-Steckplatz virtuell geschützt ist? Wie kann ich einige Dinge tun, nachdem die nächste Schaltfläche geklickt wurde?


Die Header-Datei meiner Klasse QWizard folgt. Übrigens funktioniert das accept Signal gut als was ich erwartet hatte.

#ifndef PRIMERWIZARD_H 
#define PRIMERWIZARD_H 

#include <QWizard> 

namespace Ui { 
    class PrimerWizard; 
} 

class PrimerWizard : public QWizard { 
    Q_OBJECT 
public: 
    PrimerWizard(QWidget *parent = 0); 
    ~PrimerWizard(); 
protected slots: 
    void next(); 
    void accept(); 

protected: 
    void changeEvent(QEvent *e); 

private: 
    Ui::PrimerWizard *ui; 
}; 

#endif // PRIMERWIZARD_H 

ich erstellen Sie eine neue Assistenten Instanz über QtCreator des Assistenten (Ha XD)

Der Code ist wie folgt:

PrimerWizard* pW = new PrimerWizard(this); 
pW->exec(); 

und die Signal-Schlitz-Verbindung von next von QtCreator erstellt wird, Ich kann nicht herausfinden, wo es tatsächlich angeschlossen ist. Ich denke, dass die Verbindung in ui_PrimerWizard.h durch diese Funktion aufgebaut ist:

QMetaObject::connectSlotsByName(PrimerWizard); 
+0

Ich habe eine ähnliche Situation. In meinem Fall habe ich Assistentenseiten 1-6, und in Schritt 4 möchte ich eine HTTP-Anfrage machen, auf Rückruf warten und dann zu Schritt 5 übergehen. – PedroMorgan

Antwort

2

Der next Slot nicht überschrieben werden kann. Allerdings kann die validatePage Funktion für QWizardPage. Diese Funktion wird aufgerufen, wenn auf die Schaltfläche "Weiter" oder "Beenden" geklickt wird.

Verwandte Themen