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 :

variable qui se réinitialise toujours à zéro


Sujet :

Qt

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut variable qui se réinitialise toujours à zéro
    bonjour
    je débute en programmation.
    mon programme se lance sans erreur mais le problème est qu'il m'affiche toujours les mêmes mots et n'avance pas dans le fichier quand j'appuie sur le bouton précédent de la fenêtre.
    Je pense que c'est du à la variable "i" qui reste sur les mêmes valeurs à chaque fois que j'appuie sur le bouton précédent.
    Je n'arrive pas à faire en sorte que le variable i garde la dernière valeurs sans se réinitialiser.
    Merci par avance.


    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
    40
    41
    42
    43
    #include "FenEssaiDeux.h"
     
     
    FenEssaiDeux::FenEssaiDeux(QWidget *parent) : QWidget(parent)
    {
        setupUi(this);
     
     
        QFile file("test.txt");
        if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return;
     
        QTextStream test(&file);
     
        while (!test.atEnd())
        {
             QString all = test.readAll();
             QStringList list = all.split("\n" , QString::SkipEmptyParts);
     
             listedesmots = list;
        }
        file.close();
     
    connect (boutonPrecedent, SIGNAL(clicked()), this, SLOT(on_boutonPrecedent_click()));
     
    connect (boutonSuivant, SIGNAL(clicked()), this, SLOT(on_boutonSuivant_click()));
     
    }
     
     
    void FenEssaiDeux::on_boutonPrecedent_click()
    {
    int i=0;
        labelFrancais->setText(listedesmots[i]);
        labelArabe->setText(listedesmots[i+1]);
     
     
    }
     
    void FenEssaiDeux::on_boutonSuivant_click()
    {
        labelFrancais->setText(listedesmots[16]);
        labelArabe->setText(listedesmots[17]);
    }

  2. #2
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 65
    Points : 104
    Points
    104
    Par défaut
    Il faudrait que i soit un membre de la classe FenEssaiDeux. Tu pourras ensuite l'incrémenter/décrementer dans les on_boutonNaNaNa_click() puis changer de chaînes avec les boutons.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour la réponse mais ça ne fonctionne pas en fait j'ai baladé le 'int i=0;' partout dans le programme.cpp et dans le programme.h et il y a rien à faire ça fonctionne pas. Quand je le mets dans la classe FenEssaiDeux il m'envoit les erreurs 'ISO C++ forbids initialization of member 'i'" , error making i static et ISO c++ forbids in class initialization of non const static member i.

  4. #4
    Membre confirmé
    Avatar de haraelendil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 283
    Points : 533
    Points
    533
    Par défaut
    Il faut juste que tu déclare int i; dans ton .h, et dans ton constructeur, tu met i = 0;

    Sinon, si tu ne compte pas te servir de i autre part, tu n'as qu'à mettre static int i = 0; au debut de ta méthode (t'as juste à rajouter le static quoi), comme ça i sera initialisé à 0 la premiere fois que tu passeras dans ta methode, et gardera sa valeur ensuite.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 188
    Points : 248
    Points
    248
    Par défaut
    Bonjour,
    Je pense qu'un petit tour dans les tuto C++ ne serai pas du luxe

    comme l'as dis Der Drachen tu devrai rajouter "int i;" dans ton .h, puis rajouter "i = 0;" dans ton constructeur pour l'initialiser. et le supprimer de "on_boutonPrecedent_click()"

    de plus
    Citation Envoyé par ordi_pentium Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void FenEssaiDeux::on_boutonPrecedent_click()
    {
    int i=0;
        labelFrancais->setText(listedesmots[i]);
        labelArabe->setText(listedesmots[i+1]);
    }
    ta variable i n'est jamais modifier ! même sans le fait qu'elle soit remise a 0 a chaque fois il n'y a pas de raison qu'elle change !

    ton code devrai ressembler a sa :

    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
    40
    41
    42
    43
    44
    45
    #include "FenEssaiDeux.h"
     
     
    FenEssaiDeux::FenEssaiDeux(QWidget *parent) : QWidget(parent)
    {
        setupUi(this);
     
     
        QFile file("test.txt");
        if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return;
     
        QTextStream test(&file);
     
        while (!test.atEnd())
        {
             QString all = test.readAll();
             QStringList list = all.split("\n" , QString::SkipEmptyParts);
     
             listedesmots = list;
        }
        file.close();
        i = 0;
     
        connect (boutonPrecedent, SIGNAL(clicked()), this, SLOT(on_boutonPrecedent_click()));
     
        connect (boutonSuivant, SIGNAL(clicked()), this, SLOT(on_boutonSuivant_click()));
     
    }
     
     
    void FenEssaiDeux::on_boutonPrecedent_click()
    {
        if (i > 1)
            i -= 2;
        labelFrancais->setText(listedesmots[i]);
        labelArabe->setText(listedesmots[i+1]);
    }
     
    void FenEssaiDeux::on_boutonSuivant_click()
    {
        if (i < listedesmots.size()-2)
            i += 2;
        labelFrancais->setText(listedesmots[i]);
        labelArabe->setText(listedesmots[i+1]);
    }

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    ça fonctionne. Le problème n'était pas dû à la variable mais à la condition if qui manquait. Merci à tous pour votre aide.
    Au revoir.

  7. #7
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Points : 8 140
    Points
    8 140
    Par défaut
    ?

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

Discussions similaires

  1. Variable qui se réinitialise
    Par Alx950 dans le forum Débuter avec Java
    Réponses: 28
    Dernier message: 27/05/2014, 16h37
  2. j'ai une variable qui se réinitialise à 0
    Par maserati dans le forum Zend Framework
    Réponses: 8
    Dernier message: 03/02/2011, 02h41
  3. valeurs de variable qui ne s'affichent pas toujours
    Par crazylia dans le forum MySQL
    Réponses: 2
    Dernier message: 22/04/2010, 16h00
  4. Réponses: 4
    Dernier message: 11/11/2007, 09h41
  5. Variable qui change après un DispatchMessage
    Par SekYo dans le forum Windows
    Réponses: 9
    Dernier message: 30/09/2004, 16h22

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