2010-07-24 11 views
5

Sto usando una classe QWizard, che contiene diverse QWizardPage. Per alcune pagine, ho bisogno di fare qualcosa quando si fa clic sul pulsante "Avanti".Come posso sovrascrivere lo slot "successivo" in una QWizard?

Ho provato a sovrascrivere lo slot next nella mia classe QWizard; tuttavia, sembra che questo non funzioni. Il programma è stato inserito nello slot originale next nella classe QWizard padre anziché in quello implementato.

Questo perché lo slot next è protetto da sistema virtuale? Come posso fare alcune cose dopo aver fatto clic sul pulsante successivo?


Segue il file di intestazione della mia classe QWizard. A proposito, il segnale accept funziona bene come quello che mi aspettavo.

#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 

Ho creare una nuova istanza wizard tramite wizard di QtCreator (Ha XD)

Il codice è il seguente:

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

E la connessione del segnale slot di next è creato da QtCreator, Non riesco a trovare dove è effettivamente collegato. Credo che il collegamento è costruito in ui_PrimerWizard.h da questa funzione:

QMetaObject::connectSlotsByName(PrimerWizard); 
+0

Ho una situazione simile. Nel mio caso ho pagine procedura guidata 1-6, e al punto 4 voglio fare una richiesta http, attendere la richiamata quindi passare al punto 5. – PedroMorgan

risposta

2

Lo slot next non può essere sovrascritto. Tuttavia, la funzione validatePage per QWizardPage può. Questa funzione verrà chiamata quando si fa clic sul pulsante "Avanti" o "Fine".

Problemi correlati