Bonjour!
Savez-vous comment créer des slots personnalisés dans un QWizard?
Par exemple mon bouton "boutParcourir" devrait lancer une boite de dialogue pour chercher un fichier.
Mais lorsque je rajoute la macro Q_OBJECT dans la classe, le programme me fait un :
nouvellegrille.cpp:(.text+0x10fe): undefined reference to `vtable for NouvelleGrille'
J'ai passé ma journée à chercher mais QWizard ne semble pas très utilisé. J'ai quand même lu que selon certains QWizard n'hérite pas de QObject et donc ne peut pas accepter la macro, pourtant la doc dit qu'il herite de QObject.
Pour le moment la seule solution que j'ai trouvé c'est d'utiliser le signal "clicked()" du bouton pour appeler un slot de le fenetre parent (slotCheminFichier()), celui-ci emet, après avoir ouvert la boite de dialogue, un signal contenant un QString avec le chemin du fichier qui est alors receptionné par le SLOT 'setText' de la zone de saisie du chemin.
En gros je me sert de la fenetre parent pour faire mon slot personnalisé.
dans le constructeur du QWizard:
QObject::connect(boutParcourir,SIGNAL(clicked()),mere,SLOT(slotCheminFichier()));
dans le slot du parent:
emit signalEnvoiChemin(QString(QFileDialog::getOpenFileName(this, "Ouvrir une fichier")));
dans le constructeur du QWizard:
QObject::connect(mere,SIGNAL(signalEnvoiChemin(QString)),cheminBrute,SLOT(setText(QString)));
Ca marche très bien, mais c'est tordu et ça encombre la classe parent, surtout que j'ai d'autre slots a faire.
Quelqu'un aurait une idée de comment faire fonctionner les slots dans un QWizard? Merci d'avance....
Partager