IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Connecter une action sur la fermeture d'une fenêtre

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Par défaut Connecter une action sur la fermeture d'une fenêtre
    Bonjour a tous,

    Pour l'instant j'ai une action qui permet de quitter l'application:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
    Mais j'ai aussi surcharger la méthode closeEvent(QCloseEvent* event) de ma QMainWindow.

    Ce que je cherche a faire c'est connecter mon action a cette méthode.
    Savez-vous si cela est possible ou je dois faire un slot qui fait un exit(0) ?

    Je vous remercie d'avance pour votre aide

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 384
    Par défaut interception fermeture fenetre
    Voilà comment j'ai fait

    J'ai surchargé aussi closeevent

    dans closeevent j'appele une fonction qui appele un QMessagebox et effectue d'autres traitements.

    ensuite voilà mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void closeEvent(QCloseEvent* event)
    {
    valeur=sous_code();
    if (valeur==QMessageBox::Yes)
    {
      event->accept();
    }
    else
    {
      event->ignore();
    }
    }
    ma routine sous_code() appele QApplication::quit(); si je souhaite quitter. A partir du moment ou tu crée la fonction closeEvent, la fenêtre n'est plus fermée automatiquement. pour info j'ai une seule fenêtre dans mon appli donc le fait de la fermer met dans mon cas fin à mon appli ( via QApplication::quit()

    Ma routine sous_code est également appelé par un SLOT à partir de mon menu.

    En espérant t'avoir aidé.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Par défaut
    Je ne comprend pas bien ta méthode....

    Voici ce que moi j'ai fait pour l'instant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    .....................
        connect(quitAction, SIGNAL(triggered()), this, SLOT(quitSlot()));
    ....................
     
     
    void MainWindow::quit(QCloseEvent* event){
        int ret = QMessageBox::question(this,tr("Quitter?"),tr("Voulez-vous vraiment quitter?"),QMessageBox::Yes | QMessageBox::No);
        if (ret == QMessageBox::Yes){
            QSqlDatabase base = QSqlDatabase::database();
            base.commit();
            base.close();
            QSqlDatabase::removeDatabase(QDir::fromNativeSeparators(QDir::homePath()+"/.QFacturation/data.db"));
     
            if(event!=0)
                event->accept();
            else
                exit(0);
        }
        else
            if(event!=0)
                event->ignore();
     
    }
     
    /**
     * Methode qui ferme l'application
     * (slot du bouton quitter)
     */
    void MainWindow::quitSlot(){
        quit();
    }
     
    /**
     * Methode appeler lors de la fermeture de l'application
     */
    void MainWindow::closeEvent(QCloseEvent* event) {
        quit(event);
    }
    Cela fonctionne, mais je trouve cela un peux lourd !!!!!

Discussions similaires

  1. Réponses: 11
    Dernier message: 31/03/2008, 09h53
  2. comment lancer automatiquement 1 script au lieu d'une action sur un boutton
    Par winnie82 dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 13/07/2006, 18h13
  3. Réponses: 1
    Dernier message: 05/07/2006, 09h34
  4. Faire a un script executer une action sur un signal
    Par vodevil dans le forum Langage
    Réponses: 1
    Dernier message: 13/12/2005, 12h14
  5. Réponses: 4
    Dernier message: 31/10/2005, 17h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo