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 :

Sauvegarde automatique des données à la fermeture de la fenêtre

  1. #1
    Membre à l'essai
    Homme Profil pro
    employé
    Inscrit en
    Juin 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : employé
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 13
    Points : 14
    Points
    14
    Par défaut Sauvegarde automatique des données à la fermeture de la fenêtre
    bonjour,

    je souhaiterai intégrer des instructions pour faire des sauvegardes de données au destructeur de ma fenêtre
    mais quant je met un point d’Arrêt dans le destructeur en mode débug , il ne s’y arrête pas.
    ce qui explique pourquoi mes sauvegarde ne sont pas faites.
    quelqu'un aurait il une explication.

  2. #2
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonjour,

    C'est une question de libération de la mémoire, apparemment. J'imagine que dans votre main(), vous déclarez votre fenêtre avec une allocation dynamique et que vous n'appelez jamais delete ? Si c'est le cas, le fait de passer en allocation statique, sans new, permettra à votre destructeur d'être appelé, vu que l'instance sera automatiquement détruite par loi de durée de vie à la sortie de la fonction main(). Cela dit, si c'est à la fermeture de votre fenêtre que vous souhaitez enregistrer des informations, vous pouvez également réimplémenter le closeEvent() de votre fenêtre et y intégrer ce que vous souhaitez dedans.

    Bonne journée,
    Louis
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  3. #3
    Membre à l'essai
    Homme Profil pro
    employé
    Inscrit en
    Juin 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : employé
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 13
    Points : 14
    Points
    14
    Par défaut sauvegarde des données
    merci pour votre réponse même si je ne comprends pas bien pourquoi, dans certain cas le destructeur est utilisé et dans d'autre non(mais ça doit venir de ma maniéré de programmer encore novice.
    mais finalement, j'ai suivi votre conseille et j'ai utilisé closeEvent pour faire ma sauvegarde
    merci encore

  4. #4
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonsoir,

    En fait, voici deux exemples qui illustreront le problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int main(int argc, char **argv)
    {
        QApplication app(argc, argv);
     
        MainWindow *win = new MainWindow;
        win->show();
     
        return app.exec();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int main(int argc, char **argv)
    {
        QApplication app(argc, argv);
     
        MainWindow win;
        win.show();
     
        return app.exec();
    }
    Le premier cas est le cas d'une allocation dynamique : aucun delete n'étant appelé, il s'agit d'une fuite de mémoire et le destructeur ne sera pas appelé.
    Le second cas est une allocation sur la stack : par loi de durée de vie, "win" sera libéré à la sortie de la fonction (au return) et son destructeur sera appelé.

    Bonne soirée,
    Louis
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. non sauvegarde des données à la fermeture d'un formulaire
    Par zanou666 dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/10/2007, 14h20
  2. [Système]sauvegarde automatique base données
    Par Brice_68 dans le forum Sécurité
    Réponses: 4
    Dernier message: 05/04/2007, 11h19
  3. [MySQL] Suppression automatique des données
    Par Angelik dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 14/12/2006, 22h06
  4. [Preferences] Sauvegarde automatique des préférences sur une vue
    Par pistache42 dans le forum Eclipse Platform
    Réponses: 10
    Dernier message: 04/12/2006, 11h32
  5. Réponses: 5
    Dernier message: 20/07/2006, 16h01

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