Problémz avec les slots qt

Résolu/Fermé
jrad31 Messages postés 58 Date d'inscription mardi 7 avril 2009 Statut Membre Dernière intervention 14 juillet 2012 - 27 janv. 2010 à 20:55
jrad31 Messages postés 58 Date d'inscription mardi 7 avril 2009 Statut Membre Dernière intervention 14 juillet 2012 - 29 janv. 2010 à 08:39
Bonjour,
je suis entrain d'apprendre Qt,
alors j'ai dessiner deux fenêtres avec Qt designer et maintenant je veux que lorsque je clique sur une bouton , la fenêtre courante se ferme et une autre s'ouvre, mon code est le suivant:

main .cpp

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Fen1 f;
f.show();
return app.exec();
}

Fen1.cpp

void Fen1::on_aide_clicked(){
Fen2 f;
f.show();
this.close();
}

les erreurs : close n'est pas un type
et si je léve cette ligne fen2 s'affiche rapidement et se cache .
A voir également:

2 réponses

jrad31 Messages postés 58 Date d'inscription mardi 7 avril 2009 Statut Membre Dernière intervention 14 juillet 2012 5
28 janv. 2010 à 07:04
bonjour,
merci votre aide, donc vous voulez que je fait ça :

void Fenpr::on_aide_clicked(){
apropos * fap;
fap->show();
//this.close
}
c'est vrai qu'il y a pas d'erreur de compilation mais lorsque je clique sur le bouton une fenetre d'erreur windows s'affiche :
"test.exe a rencontré un problème et doit fermer. Nous vous prions de nous excuser pour le désagrément encouru. ...Veuillez signaler ce problème à Microsoft..."
c quoi maintenant le pblm!!!
et comment peut on faire pour fermer la fenetre courante !!?

merciii
1
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
29 janv. 2010 à 02:26
apropos * fap;
fap->show();

Là encore ce qui se passe est normal.
Tu déclares un pointeur de type 'apropos', mais lorsque que s'exécute l'instruction 'fap->show'... l'objet potentiel que représentait 'fap' n'existe pas, aucune n'instance n'a été créée et le plantage de type 'segment fault, tôt ou tard, est assuré.
Après avoir déclaré que l'on désirait un objet de type 'apropos', il faut absolument, si on désire l'utiliser, déclarer sa concrétisation et le seul moyen d'y parvenir est de demander la construction de cet objet:
apropos* fap;
fap = new apropos; // Indiquer les éventuels paramètres
fap->show();
Ensuite, je ne sais pas ce que tu veux faire, mais tu peux laisser le 'fclose' car l'objet 'fap' continuera d'exister jusqu'à la fin du programme si tu ne lui as pas donné de 'parent'; c'est là une caractéristique de 'Qt', tout objet est détruit au plus tard à la mort de son 'parent'. En général, on ne laisse pas d'objet sans parent, alors autant lui donner, par défaut, l'instance principale comme parent.
Bonne continuation.
0
jrad31 Messages postés 58 Date d'inscription mardi 7 avril 2009 Statut Membre Dernière intervention 14 juillet 2012 5 > loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017
29 janv. 2010 à 08:39
merciiii bcp , sa roule
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
27 janv. 2010 à 23:30
Supposons avoir le code:
void Fen1::on_aide_clicked(){
  Fen2 f;
  f.show();
  ...
}
Que se passe-t-il ?
Fen2 f; crée un objet 'f' en faisant appel au constructeur de 'Fen2'. Cet objet est une variable locale... donc en sortant de la fonction 'on_aide_clicked', l'objet 'f' est détruit en faisant appel à son destructeur... et la fenêtre se ferme. Tout est donc normal.
Moralité: Si tu veux que l'objet soit persistant une fois la fonction terminée, il n'y a que la classique solution de créer un pointeur de type 'Fen2'.
Bonne réflexion.
0