[Qt] quelle fonction pour intecepter la fermeture de la fenêtre d'app

quelle fonction pour intecepter la fermeture de la fenêtre d'app [Qt] - C++ - Programmation

Marsh Posté le 04-04-2003 à 11:32:23    

J'utilise KDevelop et QTDesigner,
 
pour l'instant je ferme mon application avec un menu,
avec ce menu j'appelle un fonction qui ferme bien tout avant de quitter.
 
J'aimerais pouvoir intercepter le bouton (en haut à droite) de la fenêtre puisque ce bouton quitte l'application,
mais je ne sais pas quelle fonction réécrire pour intecepter ce signal.

Reply

Marsh Posté le 04-04-2003 à 11:32:23   

Reply

Marsh Posté le 04-04-2003 à 11:49:43    

le signal lastWindowClosed () de la classe QApplication est émit lorsque la dernière fenêtre est fermée. je sais pas si c'est que tu veux mais ca peut t'aider. sinon il y a aussi aboutToQuit () qui est appelée avant que l'application ne quitte.


Message édité par gloop le 04-04-2003 à 11:50:53
Reply

Marsh Posté le 04-04-2003 à 11:49:57    

Tu peut tjs associer une fct avec le signal de destruction de ta fenetre ds QT

Reply

Marsh Posté le 04-04-2003 à 11:53:23    

Bounty a écrit :

Tu peut tjs associer une fct avec le signal de destruction de ta fenetre ds QT

C'est justement ce que je veux faire,
mais je ne connais pas ce signal,
apparemment gloop a répondu à ma question.

Reply

Marsh Posté le 04-04-2003 à 11:54:11    

tu peux aussi faire ton nettoyage dans le closeEvent () en surchargeant cette méthode. ou encore tout nettoyer dans le destructeur de ta classe gérant la fenêtre principale, mais là, faut pas oublier de mettre le flag WDestructiveClose dans les flags de ta fenêtre. Bref, y a plein de facons de faire, c'est à toi de voir comment tu veux le faire.

Reply

Marsh Posté le 04-04-2003 à 12:15:25    

Ben je comprend pas trop,
 
pour surcharger, il faut bien appeler la fonction avec le même nom que la fonction que l'on veut surcharger......précédée de virtual ? non ?
 
....parce que ça ne fonctionne pas...

Reply

Marsh Posté le 04-04-2003 à 12:25:54    

warp a écrit :

Ben je comprend pas trop,
 
pour surcharger, il faut bien appeler la fonction avec le même nom que la fonction que l'on veut surcharger......précédée de virtual ? non ?
 
....parce que ça ne fonctionne pas...


t'es pas obligé de repréciser virtual.
t'as qu'à rajouter
 

Code :
  1. void closeEvent (QCloseEvent *e)
  2. {
  3. /* ... */
  4. }


tu peux accepter l'évenement ou le rejeter, si tu fais rien, l'événement continue d'être propagé.
 
Qu'est ce que t'entends par ca marche pas ?

Reply

Marsh Posté le 04-04-2003 à 12:33:42    

Ok en fait j'ai suivi ton conseil au pied de la lettre,
 
j'avais surchargé closeEvent()
et non pas closeEvent(QCloseEvent *e)
 
 
Maintenant cela fonctionne.
 
Merci.   :hello:

Reply

Marsh Posté le 04-04-2003 à 12:35:42    

Me reste à intercepter le signal kill et c'est bon.....

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed