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 :

Probleme avec une case à cocher


Sujet :

GTK+ avec C & C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Probleme avec une case à cocher
    Bonjour,

    je cherche à créer une case à cocher suivie d'un label. j'ai réussi, cependant je n'arrive pas à changer le label de la case une fois cochée, ce qui me permettrait de savoir si le programme prend bien en compte que la case a été cochée.

    je pense qu'une fois cochée la case émet un signal " clicked" mais je n'arrive pas à l'exploiter, j'ai également essayé avec " toggled" mais sans succès.

    j'aimerais trouver le moyen de detecter si la case a été coché pour ensuite supprimer l'element coché d'un fichier annexe.

    j'espère avoir été assez claire.
    merci d'avance.

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Salut, bienvenue sur les forums de developpez.com


    Un GtkCheckButton dérivant directement d'un GtkToggleButton, tu peux sans problème utiliser la fonction gtk_toggle_button_get_active qui te permet de connaître l'état de la case à savoir, cocher ou non !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 74
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Franck.H
    Un GtkCheckButton dérivant directement d'un GtkToggleButton, tu peux sans gtk_toggle_button_get_active qui te permet de connaître l'état de la case à savoir, cocher ou non !
    J'ai fait cette implémentation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void 
    on_check_button_toggled (GtkWidget *widget, gpointer user_data)
    {
        my_struct *pt = (my_struct *)user_data;
        gboolean etat = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(pt->checkbutton_am_deb) );
     
        if(etat)
        gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(pt->checkbutton_pm_deb), FALSE);                
    }
    avec le signal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    pt->checkbutton_am_fin = gtk_check_button_new_with_mnemonic (_("AM"));
    pt->checkbutton_pm_fin = gtk_check_button_new_with_mnemonic (_("PM"));
     
    g_signal_connect (G_OBJECT(pt->checkbutton_am_deb), "toggled",
    		    G_CALLBACK (on_check_button_toggled), pt);
    Mais j'ai un beug...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    assertion GTK_IS_TOGGLE_BUTTON (toggle_button) failled. 
    
    Ce que je veux c'est qu'en choisissant une heure, si l'utilisateur clique sur AM, que ça verrouille l'appui sur PM.

    Merci

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci pour cette réponse si rapide.
    je m'étais servie de la fonction gtk_toggle_button_get_active mais je pense que c'est dans la syntaxe de mon signal qu'il y a un probleme :

    g_signal_connect(G_OBJECT(pCheckBtn[1]), "clicked", G_CALLBACK(OnEtatBtn), NULL);

    avec pCheckBtn[1] la case à cocher et OnEtatBtn une fonction issue du tutoriel de GTK qui me permet de modifier l'état de la case à cocher mais je ne sais pas s'il faut que le dernier parametre soit " NULL" ou autre chose.

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Je pense que le plus logique serait que le dernier argument soit justement le pointeur du widget que tu veux "décocher" !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    je suis vraiment désolée avec mes questions qui doivent vous paraître stupides mais comment je fais pour faire pointer le pointeur sur le widget? normalement je dois stocker l'adresse du widget dans le pointeur mais j'ai essayé pToggle=&pCheckBtn[1]; et pToggle=pCheckBtn[1]; et aucun des deux ne marche...

  7. #7
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Ceci est le genre de pratique qu'on apprend au début de l'apprentissage de GTK+. Si on considère pCheckBtn[0] comme une case à cocher que tu veux décocher lors du clique sur la case pCheckBtn[1]l:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g_signal_connect(G_OBJECT(pCheckBtn[1]), "clicked", G_CALLBACK(OnEtatBtn), (gpointer) pCheckBtn[0]);
    Il faut ensuite récupérer un pointeur correcte dans ton callback car ici il est transmis dans un pointeur générique donc il faut procéder de la sorte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void user_function (GtkToggleButton *togglebutton, gpointer data)
    {
       GtkCheckButton * p_check_button = data;
       ...
    GTK+ c'est comme le C, ca ne se code pas au hasard, il faut l'apprendre minutieusement: http://gtk.developpez.com/cours/gtk2/
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci!! il me manquait la partie signaux dans mon tuto de GTK d'où mon incompétence, car sinon, je suis une élève assidue

  9. #9
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par loréline
    Merci!! il me manquait la partie signaux dans mon tuto de GTK d'où mon incompétence, car sinon, je suis une élève assidue
    J'en doute pas et je l'espère
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  10. #10
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 74
    Points : 54
    Points
    54
    Par défaut
    Hi,
    J'utilise des Radiobutton à la place des Checkbutton, mais comme ils héritent ts deux d'un Tooglebutton (enfin je pense), je dois pouvoir utiliser les même fonction.
    J'ai deux boutons (Radiobutton), par défaut, le premier est coché, ce que je veux c'est récupérer l'etat du deuxième. S'il est activé, je récupère son état, Ai je besoin de faire un g_signal_connect(), ou puis je simplement faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gboolean etat = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pt->radiobutton_pm_deb));
    pour récupérer l'etat du boutton. Si oui, j'ai un beug.... Le programme compile, mais lorque j'active la partie contenant cette ligne de code, ça plante mon programme.

  11. #11
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 74
    Points : 54
    Points
    54
    Par défaut
    Hi,

    J'aimerais savoir s'il existe une fonction autre que "gtk_toggle_button_get_active()" pour récupérer l'état d'un radiobutton.

    Merci et bon dimanche... (J'espère que vous avez tous voté... )

  12. #12
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par cupidette92
    J'aimerais savoir s'il existe une fonction autre que "gtk_toggle_button_get_active()" pour récupérer l'état d'un radiobutton.
    Je pense pas, cette fonction est prévue justement pour ca Si ton programme plante, soit le widget n'est pas (ou mal) initialisé ou bien tu as un problème avec la structure si c'est un argument d'une fonction ... faut montrer du code
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  13. #13
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 74
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Franck.H
    Je pense pas, cette fonction est prévue justement pour ca Si ton programme plante, soit le widget n'est pas (ou mal) initialisé ou bien tu as un problème avec la structure si c'est un argument d'une fonction ... faut montrer du code
    je l'ai fais, regarde juste un peu plus haut...

    euh non attend:
    Tous mes widgets sont crées de cette façon.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    pt->radiobutton_pm_fin = gtk_radio_button_new_with_mnemonic(NULL, "_AM");
    group_deb = gtk_radio_button_get_group(GTK_RADIO_BUTTON(pt->radiobutton_am_deb));
    pt->radiobutton_pm_deb = gtk_radio_button_new_with_mnemonic(group_deb, "_PM");
    et je veux récupérer l'état comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    etat = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pt->radiobutton_pm_deb));
    etat = gboolean;
    group_deb = GSList *;

Discussions similaires

  1. Affichage dossier avec une case à cocher
    Par corwin44 dans le forum Windows Vista
    Réponses: 5
    Dernier message: 22/01/2009, 14h34
  2. Supprimer les éléments sélectionnés avec une case à cocher
    Par keishah dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 16/08/2007, 15h38
  3. liste déroulante avec une case à cocher et une image
    Par kurul1 dans le forum C++Builder
    Réponses: 4
    Dernier message: 08/03/2007, 09h54
  4. Etat avec une case à cocher sur une requête difficile
    Par marcoO dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 10/01/2007, 14h21
  5. Affichage de nouveau champ de formulaire avec une case à cocher
    Par breizhgen dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/09/2006, 21h46

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