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 :

suite d'une calculette


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Par défaut suite d'une calculette
    Bonjour,

    aidez moi, j'ai une calculatrice à réaliser pour mi mai et je ne vois pas comment continuer : je vous donne déjà ce que j'ai fait :

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    #include <gtk/gtk.h>
     #include <stdlib.h>
    void on_activate_entry(GtkWidget *entreesaisi, gpointer data);
    int main(int argc, char **argv)
    {
       GtkWidget *mafenetre;
       GtkWidget *boxv;
       GtkWidget *saisi;
       GtkWidget *matable;
       GtkWidget *monlabel;
       GtkWidget *bouton[17];
     
    gtk_init(&argc,&argv);
     
       mafenetre= gtk_window_new(GTK_WINDOW_TOPLEVEL);
       gtk_window_set_title(GTK_WINDOW(mafenetre),"Calculatrice");
       gtk_window_set_default_size(GTK_WINDOW(mafenetre),700,600);
       g_signal_connect(G_OBJECT(mafenetre),"destroy",G_CALLBACK(gtk_main_quit),NULL);
     
       matable=gtk_table_new(7,4,TRUE); 
       gtk_container_add(GTK_CONTAINER(mafenetre),GTK_WIDGET(matable));
     
       saisi = gtk_entry_new();
     
       bouton[0]=gtk_button_new_with_label("0");
       bouton[1]=gtk_button_new_with_label(",");
       bouton[2]=gtk_button_new_with_label("-");
       bouton[3]=gtk_button_new_with_label("1");
       bouton[4]=gtk_button_new_with_label("2");
       bouton[5]=gtk_button_new_with_label("3");
       bouton[6]=gtk_button_new_with_label("4");
       bouton[7]=gtk_button_new_with_label("5");
       bouton[8]=gtk_button_new_with_label("6");
       bouton[9]=gtk_button_new_with_label("7");
       bouton[10]=gtk_button_new_with_label("8");
       bouton[11]=gtk_button_new_with_label("9");
       bouton[12]=gtk_button_new_with_label("=");
       bouton[13]=gtk_button_new_with_label("+");
       bouton[14]=gtk_button_new_with_label("-");
       bouton[15]=gtk_button_new_with_label("*");
       bouton[16]=gtk_button_new_with_label("/");
     
       monlabel = gtk_label_new(NULL); 
     
       gtk_table_attach_defaults(GTK_TABLE(matable),bouton[0],0,1,6,7);
       gtk_table_attach_defaults(GTK_TABLE(matable),bouton[1],1,2,6,7);
       gtk_table_attach_defaults(GTK_TABLE(matable),bouton[2],2,3,6,7);
       gtk_table_attach_defaults(GTK_TABLE(matable),bouton[3],0,1,5,6);
       gtk_table_attach_defaults(GTK_TABLE(matable),bouton[4],1,2,5,6);
       gtk_table_attach_defaults(GTK_TABLE(matable),bouton[5],2,3,5,6);
       gtk_table_attach_defaults(GTK_TABLE(matable),bouton[6],0,1,4,5);
       gtk_table_attach_defaults(GTK_TABLE(matable),bouton[7],1,2,4,5);
       gtk_table_attach_defaults(GTK_TABLE(matable),bouton[8],2,3,4,5);
       gtk_table_attach_defaults(GTK_TABLE(matable),bouton[9],0,1,3,4);
       gtk_table_attach_defaults(GTK_TABLE(matable),bouton[10],1,2,3,4);
       gtk_table_attach_defaults(GTK_TABLE(matable),bouton[11],2,3,3,4);
       gtk_table_attach_defaults(GTK_TABLE(matable),bouton[12],3,4,6,7);
       gtk_table_attach_defaults(GTK_TABLE(matable),bouton[13],3,4,5,6);
       gtk_table_attach_defaults(GTK_TABLE(matable),bouton[14],3,4,4,5);
       gtk_table_attach_defaults(GTK_TABLE(matable),bouton[15],3,4,3,4);
     
       gtk_widget_show_all(mafenetre);
       gtk_main();
       return EXIT_SUCCESS;
    }
    maintenant je souhaite pouvoir afficher un widget qui fait apparaitre ce que l'on tape ( donc si je clique sur 2 puis sur le + puis 3 je veux que sa m'affich 2 + 3) j'ai déja vu le cours de gtk + qui permet de faire le tuto assez célèbre qui consiste à copier une chaine de caractère que l'on a écrit auparavant. Mais le problème c'est que je n'arrive pas à faire le rapport avec mon sujet, ya til des fonctions qui sont faites pour sa? plz donner moi ce petit bout de code !

  2. #2
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Par défaut
    commence dabord par trouver une place a ton label dans la table comme tu a fait avec les boutons en utilisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gtk_table_attach_defaults(GTK_TABLE(matable),monlabel,x,x,x,x);
    ensuite connecte tous tes bouton a la seule et meme fonction callback (chacun tout seul ) qui metteras a jour monlabel en concaténant le label du bouton avec !

    n'oublie pas de passer monlabel en parametre a la fonction callback !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    g_signal_connect(G_OBJECT(bouton[x]), "clicked", G_CALLBACK(cb_tafonction), monlabel);
    voila j'esper que ca peut t'aider

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Par défaut
    Je ne vois pas vraiment ce que tu veux en dire en disant que monlabel soit concaténé avec le label du bouton :s

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Par défaut
    Citation Envoyé par icpajacky Voir le message
    Je ne vois pas vraiment ce que tu veux en dire en disant que monlabel soit concaténé avec le label du bouton :s
    pour ton exemple (2+3) voila ce qui deverait se passer normalement :

    tu vas ajouter le label de bouton[4] qui est "2" a la fin de monbalel qui est egal initialement a la chaine vide "" (concaténer "ch1" et "ch2" c'est ajouter ch2 a la fin de ch1 ce qui va donner "ch1ch2")

    par la suite quand tu appuis sur bouton[13] c'est un petit peut la meme chose qui va se reproduire : tu va ajouter "+" a la fin de monlabel qui contient maintenant "2" et ainsi de suite !

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Par défaut
    Je te remercie de m'aider sur cette calculette
    Regarde j'ai essayé de faire la fonction du 0 mais il y a un problèm dans la fonction, quand je compile et j'exécute sa me met le message "envoyer le rapport d'erreur ou ne pas l'envoyer " ( je sais que sa viens d'elle car quand je supprime ce qu'il ya entre accolade, sa ne m'affice pas d'erreur ). Est ce que c'est comme sa que tu voyais ta fonction avec le label?? (je te met le code jusqu'au bouton approprié, après j'ai plus rien touché).
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    void fonctionlabel(GtkWidget *monlabel,GtkWidget *boxprincipal,GtkWidget *zonetexte,GtkWidget *mafenetre,gpointer data)
    {
    monlabel = gtk_label_new("0");
    gtk_label_get_label(GTK_LABEL(monlabel));
    gtk_container_add (GTK_CONTAINER(zonetexte),monlabel);
    gtk_widget_show_all(mafenetre);
    }
    int main (int argc, char **argv)
    {
    GtkWidget *mafenetre ;
    GtkWidget *boxprincipal ;
    GtkWidget *matable;
    GtkWidget *bouton[17];
    GtkWidget *monlabel;
     
    // Initialisation de GTK+ //
    gtk_init (&argc, &argv);
     
    // Creation de la fenetre principale de notre application //
    mafenetre = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    g_signal_connect (G_OBJECT (mafenetre), "destroy", G_CALLBACK (gtk_main_quit), NULL);
     
    // Creation du conteneur principal //
    boxprincipal = gtk_vbox_new (FALSE, 20);
     
    gtk_container_add (GTK_CONTAINER (mafenetre), boxprincipal);
     
    GtkWidget *zonetexte = NULL;
     
    //Creation de la zone de texte //
    zonetexte = gtk_text_view_new ();
    gtk_box_pack_start (GTK_BOX (boxprincipal), zonetexte, TRUE, TRUE, 0);
     
    matable=gtk_table_new(7,4,TRUE);
    gtk_container_add(GTK_CONTAINER(boxprincipal),GTK_WIDGET(matable));
     
    bouton[0]=gtk_button_new_with_label("0");
    bouton[1]=gtk_button_new_with_label(",");
    bouton[2]=gtk_button_new_with_label("-");
    bouton[3]=gtk_button_new_with_label("1");
    bouton[4]=gtk_button_new_with_label("2");
    bouton[5]=gtk_button_new_with_label("3");
    bouton[6]=gtk_button_new_with_label("4");
    bouton[7]=gtk_button_new_with_label("5");
    bouton[8]=gtk_button_new_with_label("6");
    bouton[9]=gtk_button_new_with_label("7");
    bouton[10]=gtk_button_new_with_label("8");
    bouton[11]=gtk_button_new_with_label("9");
    bouton[12]=gtk_button_new_with_label("=");
    bouton[13]=gtk_button_new_with_label("+");
    bouton[14]=gtk_button_new_with_label("-");
    bouton[15]=gtk_button_new_with_label("*");
    bouton[16]=gtk_button_new_with_label("/");
     
    gtk_table_attach_defaults(GTK_TABLE(matable),bouton[0],0,1,6,7);
     
    g_signal_connect(G_OBJECT(bouton[0]), "clicked", G_CALLBACK(fonctionlabel), monlabel);
     
    gtk_table_attach_defaults(GTK_TABLE(matable),bouton[1],1,2,6,7);

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Par défaut
    excuse moi mais je ne vois vraiment pas comment m'y prendre pour pouvoir concaténer les deux labels. Je sais que sa ne le fais pas trop quand on demande la réponse mais un exemple serait le bienvenue. Faut comprendre que je débute le GTK donc toutes ces manipulations ne sont guère encore maîtrisées ^^

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/11/2006, 11h14
  2. [VBA-E] Comment écrire à la suite dans une cellule ?
    Par bogosse dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/07/2006, 13h03
  3. Problème pour une calculette
    Par Pyrhaa_666 dans le forum C
    Réponses: 5
    Dernier message: 13/07/2006, 19h47
  4. Réponses: 2
    Dernier message: 08/12/2005, 05h28
  5. [Struts] Fermer un Pop up à la suite d'une action
    Par Sniper37 dans le forum Struts 1
    Réponses: 2
    Dernier message: 10/03/2005, 13h58

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