Qt: Comment gérer le cas de l'utilisateur en appuyant sur le " X " bouton de fermeture?
Je suis du développement d'une application à l'aide de Qt. Je ne sais pas quel emplacement correspond à l'événement de "l'utilisateur en cliquant sur le" X "bouton de fermeture de la fenêtre" c'est à dire ce bouton:
Si il n'y a pas de fente pour cela, quelqu'un peut-il me suggérer une autre méthode qui me permette de démarrer une fonction après que l'utilisateur appuie sur le bouton fermer.
Vous devez vous connecter pour publier un commentaire.
Si vous avez un
QMainWindow
vous pouvez remplacercloseEvent
méthode.Si vous êtes à la sous-classement d'un
QDialog
, lecloseEvent
ne sera pas appelé et vous devez remplacer lesreject()
:setAttribute(Qt::WA_QuitOnClose);
pour MainWindow.closeEvent
? Il fonctionne pour moi, et la documentation de QCloseEvent dit que Le gestionnaire d'événement QWidget::closeEvent() reçoit près les événements et QDialog est également un Widget à droite? Ou est-il lié à d'anciennes Qt version (<5.x) en quelque sorte?closeEvent
dans un QDialog, mais si l'utilisateur appuyez sur la touche Esc sur le clavier, la QDialog est fermé sans appelcloseEvent
.reject
fonction devrait être la bonne décision pour résoudre ce problème. J'ai trouvé cette phrase dans la documentation: pour modifier votre boîte de dialogue du comportement proche, vous pouvez ré-écrire les fonctions accept(), reject() ou de fait(). LecloseEvent()
fonction ne doit être réimplémentée à préserver la boîte de dialogue position ou de remplacer la norme de près ou de rejeter le comportementBien, je l'ai eu. Une façon est de remplacer la
QWidget::closeEvent
(QCloseEvent *event)
méthode dans la définition de votre classe et ajouter votre code dans la fonction. Exemple:Vous pouvez joindre un LOGEMENT à la
signal de votre QApplication. Ce signal doit être déclenché juste avant l'application se ferme.
connect(qApp,SIGNAL(aboutToQuit()),this,SLOT(quitMyApp()));
aussi, vous pouvez ré-écrire membre protégé QWidget::closeEvent()