J'utilise une classe QWizard, qui contient plusieurs QWizardPage. Pour certaines pages, je dois faire quelque chose quand on clique sur le bouton "Suivant".Comment remplacer l'emplacement "suivant" dans un QWizard?
J'ai essayé d'écraser l'emplacement next
dans ma classe QWizard; Cependant, il semble que cela ne fonctionne pas. Le programme est toujours entré dans l'emplacement d'origine next
dans la classe QWizard parente au lieu de celle que j'ai implémentée.
Est-ce parce que cet emplacement next
est protégé virtuellement? Comment puis-je faire certaines choses après avoir cliqué sur le bouton suivant?
Le fichier d'en-tête de ma classe QWizard est le suivant. En passant, le signal accept
fonctionne très bien comme je m'y attendais.
#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
Je crée une nouvelle instance assistant via l'assistant de QtCreator (Ha XD)
Le code est le suivant:
PrimerWizard* pW = new PrimerWizard(this);
pW->exec();
Et la connexion signal fente de next
est créé par QtCreator, Je ne peux pas trouver où c'est connecté. Je pense que la connexion est construit en ui_PrimerWizard.h par cette fonction:
QMetaObject::connectSlotsByName(PrimerWizard);
J'ai une situation similaire. Dans mon cas, j'ai les pages de l'assistant 1-6, et à l'étape 4, je veux faire une requête http, attendre le rappel puis passer à l'étape 5. – PedroMorgan