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+ Discussion :

Un spinbutton dans une table


Sujet :

GTK+

  1. #1
    Candidat au Club
    Femme Profil pro
    en informatique
    Inscrit en
    Novembre 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : Algérie

    Informations professionnelles :
    Activité : en informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Un spinbutton dans une table
    Bonjour, Je suis débutante en programmation "c", et je viens de commencer avec GTK+ , donc on problème c'est que j'ai creer une interface <voir l'image> où les spinbutton on était mis dans une table (3,1)

    Nom : insertion.JPG
Affichages : 212
Taille : 24,0 Ko

    donc pour pouvoir recevoir le jour, le moi et l'année j'ai cris ce programme mais ça ne marche pas. (je ne suis même pas sur que c'est la bonne méthode)

    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
    void insertion2(GtkWidget *buton, gpointer data)
    {
        GtkWidget *msg=NULL;
        GtkWidget *err=NULL;
        char *ch;
        char fnom[30];
        strcpy(fnom,"temp.bin");
        GtkWidget *fenetre=gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(fenetre),"Resultats");
        gtk_window_set_default_size(GTK_WINDOW(fenetre),200,100);
        gtk_window_set_icon_from_file (fenetre,"Icone.png", NULL);
     
        GtkWidget *box=gtk_vbox_new(FALSE,0);
        gtk_container_add(GTK_CONTAINER(fenetre),box);
     
        GList *liste, *tete;
        GtkWidget *spinbut[3];
        GtkWidget *scale;
        GtkTable *table1;
     
        table1=gtk_table_new(1,3,TRUE);
        tete=gtk_container_get_children(GTK_CONTAINER((GtkWidget*)data));//la wilaya
        liste=g_list_next(tete);//l'entrée
     
        GtkWidget *entree=GTK_WIDGET(liste->data);
        gchar *texte=gtk_entry_get_text(GTK_ENTRY(entree));
        init_table(tab);//initialisation de la table contenant les noms des 48 wilayas à partir du fichier wilaya.txt
        int j,m,a,existe,e28/*erreur j>28 pour  m=02*/,e29/*erreur j>28 pour  m=02 année bissexstile*/,e30/*erreur j>28 pour  m ayant que 30j*/;
        float t;
        if(control_wilaya(tab,texte))//verifie si le nom de la wilaya introduit est correct
        {
            if(erfich) erreur_ouverture();
            liste=g_list_next(liste);//le tableau de la date
            liste=g_list_next(liste);//le tableau des spinbut
            table1=GTK_TABLE(liste->data);
            gtk_table_attach_defaults(GTK_TABLE(table1), spinbut[0],0, 1, 0, 1);
            gtk_table_attach_defaults(GTK_TABLE(table1), spinbut[1],1, 2, 0, 1 );
            gtk_table_attach_defaults(GTK_TABLE(table1), spinbut[2],2, 3, 0, 1 );
            j=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinbut[0]));
            m=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinbut[1]));
            a=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinbut[2]));
            /*liste=g_list_next(liste);//le mois
            liste=g_list_next(liste);//le spinbut du mois
            spinbut2=GTK_WIDGET(liste->data);
            m=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinbut2));//récupérer le mois
            liste=g_list_next(liste);//l'an
            liste=g_list_next(liste);//le spinbut de l'an
            spinbut3=GTK_WIDGET(liste->data);
             a=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinbut3));//récupérer l'année*/
             printf("jour: %d\n moi: %d\n année: %d",j,m,a);
            int nonpost=control_date_post(j,m,a,&e30,&e29,&e28);

  2. #2
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Il faudrait peut-être rajouter des commentaires au code pour qu'on puisse avoir le courage de s'y plonger !
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  3. #3
    Membre confirmé Avatar de Gaulouis
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2015
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2015
    Messages : 252
    Points : 476
    Points
    476
    Par défaut
    Bonjour à tous,

    Tu dis que ca ne marche pas. Mais qu'elle est le comportement que tu attendais? Qu'elle est le comportement que tu obtiens ?
    Je suis 100% d'accord avec troumad. Et je vais même plus loin en disant que pour augmenter tes chances d'obtenir de l'aide rapidement tu peux simplifier ton code pour mettre en évidence le bout de code qui coince.

    @+

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par chacha0802 Voir le message
    Bonjour, Je suis débutante en programmation "c", et je viens de commencer avec GTK+ , donc on problème c'est que j'ai creer une interface <voir l'image> où les spinbutton on était mis dans une table (3,1)

    Nom : insertion.JPG
Affichages : 212
Taille : 24,0 Ko

    donc pour pouvoir recevoir le jour, le moi et l'année j'ai cris ce programme mais ça ne marche pas. (je ne suis même pas sur que c'est la bonne méthode)

    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
    void insertion2(GtkWidget *buton, gpointer data)
    {
        GtkWidget *msg=NULL;
        GtkWidget *err=NULL;
        char *ch;
        char fnom[30];
        strcpy(fnom,"temp.bin");
        GtkWidget *fenetre=gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(fenetre),"Resultats");
        gtk_window_set_default_size(GTK_WINDOW(fenetre),200,100);
        gtk_window_set_icon_from_file (fenetre,"Icone.png", NULL);
     
        GtkWidget *box=gtk_vbox_new(FALSE,0);
        gtk_container_add(GTK_CONTAINER(fenetre),box);
     
        GList *liste, *tete;
        GtkWidget *spinbut[3];
        GtkWidget *scale;
        GtkTable *table1;
     
        table1=gtk_table_new(1,3,TRUE);
        tete=gtk_container_get_children(GTK_CONTAINER((GtkWidget*)data));//la wilaya
        liste=g_list_next(tete);//l'entrée
     
        GtkWidget *entree=GTK_WIDGET(liste->data);
        gchar *texte=gtk_entry_get_text(GTK_ENTRY(entree));
        init_table(tab);//initialisation de la table contenant les noms des 48 wilayas à partir du fichier wilaya.txt
        int j,m,a,existe,e28/*erreur j>28 pour  m=02*/,e29/*erreur j>28 pour  m=02 année bissexstile*/,e30/*erreur j>28 pour  m ayant que 30j*/;
        float t;
        if(control_wilaya(tab,texte))//verifie si le nom de la wilaya introduit est correct
        {
            if(erfich) erreur_ouverture();
            liste=g_list_next(liste);//le tableau de la date
            liste=g_list_next(liste);//le tableau des spinbut
            table1=GTK_TABLE(liste->data);
            gtk_table_attach_defaults(GTK_TABLE(table1), spinbut[0],0, 1, 0, 1);
            gtk_table_attach_defaults(GTK_TABLE(table1), spinbut[1],1, 2, 0, 1 );
            gtk_table_attach_defaults(GTK_TABLE(table1), spinbut[2],2, 3, 0, 1 );
            j=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinbut[0]));
            m=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinbut[1]));
            a=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinbut[2]));
            /*liste=g_list_next(liste);//le mois
            liste=g_list_next(liste);//le spinbut du mois
            spinbut2=GTK_WIDGET(liste->data);
            m=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinbut2));//récupérer le mois
            liste=g_list_next(liste);//l'an
            liste=g_list_next(liste);//le spinbut de l'an
            spinbut3=GTK_WIDGET(liste->data);
             a=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinbut3));//récupérer l'année*/
             printf("jour: %d\n moi: %d\n année: %d",j,m,a);
            int nonpost=control_date_post(j,m,a,&e30,&e29,&e28);
    Bonjour.

    Comme Gaulouis à déterré ce post je prends le temps de t'apporter un début de réponse. Ce qui transpire dans ton code c'est que tu n'as pas compris le mécanisme de programmation événementielle.
    La fonction insertion2(); crée la fenêtre d'affichage de la date. Si tu désires récupérer la date modifiée il te faut attacher une (ou des) fonction aux spinbuttons par exemple ou alors au bouton "Ajouter".

    Comment attacher une fonction ? En utilisant la fonction g_signal_connect();. Je te laisse le soin d'aller voir la documentation officielle pour voir comment l'utiliser.

    Cette fonction attend entre-autre un nom d'un signal. Pour le connaître tu le trouveras aussi dans la documentation officielle pour le widget associé (GtkSpinButton par exemple).

Discussions similaires

  1. Déterminer la Valeur la plus grande dans une table
    Par arnaud_verlaine dans le forum Langage SQL
    Réponses: 9
    Dernier message: 22/08/2014, 23h35
  2. Ordre des champs dans une table
    Par patapetz dans le forum Outils
    Réponses: 5
    Dernier message: 30/07/2003, 06h53
  3. Ajout d'une colonne dans une table ...
    Par Djedjeridoo dans le forum SQL
    Réponses: 2
    Dernier message: 22/07/2003, 16h12
  4. Recherche de donnee dans une table associée
    Par josoft dans le forum Requêtes
    Réponses: 2
    Dernier message: 14/07/2003, 15h22
  5. Comment stocker un ficher dans une table postgres
    Par josoft dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/06/2003, 16h41

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