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

Qt Discussion :

[Qt] Fichier .ini avec QSettings : Comment fermer un fichier ?


Sujet :

Qt

  1. #1
    Futur Membre du Club
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut [Qt] Fichier .ini avec QSettings : Comment fermer un fichier ?
    Coucou ^^

    Alors voilà j'ai un petit problème.

    J'utilise un fichier .ini, avec un QSettings afin de récupérer des paramètres d'une classe à l'autre.

    Le problème est que j'essaie d'ouvrir ce même fichier alors qu'il n'est pas fermé ailleurs.
    Voilà un bout de code qui explique ce que je fais :
    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
     
    void slotClasseA (void)
    {
        qDebug("classe A : on écrit dans le fichier.ini");
        QSettings settings ("monfichier.ini",QSettings::IniFormat);
        settings.setValue("hauteur",10);
     
        emit modificationFichier(void);
     
        qDebug("fin slot classe A");
     
    }
     
    void slotClasseB (void)
    {
        qDebug("classe B : on lit dans le fichier.ini");
        QSettings settings ("monfichier.ini",QSettings::IniFormat);
        int valeurLue = settings.value("hauteur").toInt();
     
     
        qDebug("fin slot classe B");
     
    }
    Le signal modificationFichier est connecté au slot slotClasseB.
    Mon problème : Je ne peux pas récupérer les valeurs dans le fichier.ini, dans la classeB.

    Voilà ce que l'on peut observer dans la console avec les qDebug :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    classe A : on écrit dans le fichier.ini
    classe B : on lit dans le fichier.ini
    fin slot classe B
    fin slot classe A
    On voit bien que le slot de la classe A n'est pas terminé (quand on est dans la classe B), je suppose donc que je n'arrive pas à récupérer les valeurs parce que le fichier n'a pas été fermé, donc je ne peux pas le réouvrir. J'ai déjà essayer en appelant le destructeur du QSettings avant d'emettre le signal, mais le programme plante.

    Existe-t-il un moyen de fermer un fichier.ini avec un QSettings ? Sinon avez-vous une solution ?

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Ton résultat console est tout à fait cohérent. Ton emit "signal" appel directement le slot B, comme si tu faisais un appel de fonction.

    Sinon, pour ton problème, le fichier peut être ouvert 2 fois, ça ne pose pas vraiment de problème. Comme il est possible d'éditer un fichier texte dans deux applications différentes. Le problème vient plutot du fait que les settings ne sont pas réellement écrits tant que l'instance de QSettings n'est pas détruite.

    Pour forcer l'écriture des settings en cours, il y a la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void QSettings::sync ()
    . As tu essayé ?

    G.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

  3. #3
    Futur Membre du Club
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Bon ben problème résolu :

    Comme d'habitude c'était une erreur toute bête, le chemin d'acces du fichier comportait une faute de frappe.

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

Discussions similaires

  1. Comment fermer un fichier Excel avec Access
    Par zoom61 dans le forum VBA Access
    Réponses: 22
    Dernier message: 24/08/2017, 09h33
  2. Réponses: 6
    Dernier message: 20/01/2015, 09h09
  3. Réponses: 6
    Dernier message: 06/08/2012, 12h16
  4. Réponses: 4
    Dernier message: 04/09/2008, 16h55
  5. [BCB 5]Comment lire un fichier AVI avec un TAnimate ?
    Par Sitting Bull dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/09/2004, 11h57

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