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

GTK+ avec C & C++ Discussion :

Une super GtkCalculatrice


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut Une super GtkCalculatrice
    Bonjour à tous, désolé, c'est encore moi...
    Bon ben finalement, j'ai décidé de continuer un peu avec gtk...
    La pour m'exercer, je suis en train de faire une calculatrice...
    Seulement j'ai un probleme
    Quand j'appui sur le bouton "+", il devrait m'afficher le message de test "Ok c bon", seulement, ça ne marche pas, et je ne comprends pas pourquoi

    Voici une partie du main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        /* Connexion au signal "clicked" des boutons d'opération */
        for (i = 12; i <= 17; i++)
        g_signal_connect(G_OBJECT(calculatrice->pButton[i]),"clicked",G_CALLBACK(operation),calculatrice->pSaisie);
     
        gtk_widget_show_all(calculatrice->pWindow);
    Voici ma fonction callback:
    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
     
    void operation(GtkWidget *widget, gpointer data)
    {
        //gchar sSaisie[MAX_LENGTH + 1] = "";
        /* On récupere le label du bouton */
        const gchar *label = gtk_button_get_label(GTK_BUTTON(widget));
     
        switch (label[0])
        {
            case '+':
                addition(data);
                break;
            case '-':
                soustraction(data);
                break;
            case '*':
                multiplication(data);
                break;
            case '/':
                division(data);
                break;
            case '%':
                modulo(data);
                break;
            case '=':
                resultat(data);
                break;
        }
    }
    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
     
    void addition(gpointer data)
    {
        /* Variables */
        MainWindow *calculatrice;
        const gchar* sSaisie;
     
        /* Récuperation de data */
        calculatrice = (MainWindow*) data;
     
        /* Récupération du nombre contenu dans le GtkEntry */
        sSaisie = gtk_entry_get_text(GTK_ENTRY(calculatrice->pSaisie));
     
        /* Modification du texte contenu dans le GtkEntry */
        gtk_entry_set_text(GTK_ENTRY(calculatrice->pSaisie), "Ok, c bon");
     
     
    }
    et la c'est ma structure _MainWindow
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    struct _MainWindow
    {
        GtkWidget *pWindow;
        GtkWidget *pTable;
        GtkWidget *pButton[20];
        GtkWidget *pSaisie;
        GtkWidget *pLabel;
    };
    typedef struct _MainWindow MainWindow;
    Donc ben si vous avez une solution, ça serait sympa..
    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Tiens, ça faisait longtemps que je n'avais pas eu à poser cette question Que signifie "ça ne marche pas" ? Juste que ça n'affiche pas le message que tu attends? Ca affiche des warnings à la place ? le programme plante ?

  3. #3
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Déjà, disséminer des g_debug (G_STRFUNC) au début des fonctions, et des g_debug (G_STRLOC) autour des lignes qui t'intéressent... Ça te permettra de diagnostiquer ce qui est exécuté et ce qui ne l'est pas.

    Ensuite ta fonction operation est trop compliquée. Tu devrais juste récupérer le texte du bouton et le rajouter à la fin de ta zone de saisie, sauf dans le cas du bouton =. Les fonctions addition, soustraction, etc. ne servent à rien. Le code d'addition devrait être dans operation.

    Regarde le comportement de gcalctool sous GNOME.

  4. #4
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    J'ai trouvé le probleme, c'est ma fonction addition, le parametre data, je lui envoi un GtkEntry..

    Mais en fait ça résout pas mon problème, car je peu faire une addition, mais la soustraction ça marche pas...

    Le code d'addition devrait être dans operation.
    Oui, effectivement, c'est ce que j'ai fait au final, mais la soustraction ne fonctionne pas..

    Effectivement, j'ai regardé gcalctool, mais il utilise de l'analyse syntaxique.
    Dans ce cas, il faudrait que je trouve un tuto sur bison.

    ça s'annonce beaucoup plus compliqué que ce que je pensais....

  5. #5
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Tu nous dis encore que ça ne marche pas, mais sans nous donner de code. Idem la fois d'avant tu découpes tellement les morceaux à donner qu'on avait pas la partie qui déconnait (le type de ta variable)...

  6. #6
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    tu nous dis encore que ça ne marche pas, mais sans nous donner de code.
    Ah, oui, en fait, la compilation se passait sans problème, mais quand je cliquais sur "+" rien ne s'affichait...

    De plus, mon code est sur 6 fichiers, je ne peut donc pas les poster tous sur le forum..
    Tu peux faire l'analyse toi même, c'est un cas simple...
    Ben, oui mais c'est pas du C

Discussions similaires

  1. Protéger une super idée d'application
    Par ramoucho75020 dans le forum Emploi
    Réponses: 28
    Dernier message: 25/11/2019, 11h38
  2. Réponses: 23
    Dernier message: 25/05/2010, 16h44
  3. Accessibilité Aux Attributs d'une Super Classe
    Par Goupo dans le forum Langage
    Réponses: 6
    Dernier message: 06/06/2007, 17h20
  4. [débutant] appel de la fonction d'une super-classe
    Par Higestromm dans le forum C++
    Réponses: 7
    Dernier message: 10/10/2005, 13h38
  5. Referencer une super classe
    Par MrBlonde666 dans le forum Général Python
    Réponses: 2
    Dernier message: 02/07/2005, 17h52

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