1. #1
    Membre éclairé
    Homme Profil pro
    développeur/intégrateur/administrateur système
    Inscrit en
    octobre 2011
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : développeur/intégrateur/administrateur système
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : octobre 2011
    Messages : 299
    Points : 693
    Points
    693

    Par défaut récupérer nom gtk_entry

    Bonjour,

    Je voudrais savoir comment on retrouve le nom d'un widget...

    J'utilise la fonction gtk_widget_get_name, mais celle ci me renvoie "GtkEntry"

    Ca, je le sais bien, seulement, dan ma fenêtre il y en a 6 qui se nomment "entryJour1", "entryJour2", "entryMois1" .. etc
    et c'est ce nom que je voudrais récupérer..


    Merci :$




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //connection callbacks
                g_signal_connect(       fen1.entryJour1,    "changed", G_CALLBACK(entry_changed_f), &fen1);
                g_signal_connect(       fen1.entryJour2,    "changed", G_CALLBACK(entry_changed_f), &fen1);
                g_signal_connect(       fen1.entryMois1,    "changed", G_CALLBACK(entry_changed_f), &fen1);
                g_signal_connect(       fen1.entryMois2,    "changed", G_CALLBACK(entry_changed_f), &fen1);
                g_signal_connect(       fen1.entryAnnee1,   "changed", G_CALLBACK(entry_changed_f), &fen1);
                g_signal_connect(       fen1.entryAnnee2,   "changed", G_CALLBACK(entry_changed_f), &fen1);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    static void entry_changed_f(GtkWidget *p_wid, FenetreObj *p_data)
    {
        const gchar *text = gtk_entry_get_text(GTK_ENTRY( p_data->entryJour1));
        const gchar *s = gtk_widget_get_name(GTK_WIDGET(p_wid));
     
        printf("\nSource : %s  // Texte : %s\n", s, text);
    }
    Sortie console
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Source : GtkEntry  // Texte : 5

  2. #2
    Membre averti
    Inscrit en
    janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 329
    Points : 364
    Points
    364

    Par défaut

    Salut,

    As-tu assigné un nom aux widgets avec gtk_widget_set_name avant ?

  3. #3
    Membre éclairé
    Homme Profil pro
    développeur/intégrateur/administrateur système
    Inscrit en
    octobre 2011
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : développeur/intégrateur/administrateur système
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : octobre 2011
    Messages : 299
    Points : 693
    Points
    693

    Par défaut

    non, j'ai fait l'interface avec glade. Et j'ai biensur donné les noms que j'ai donné ci dessus à mes widjets

  4. #4
    Membre actif 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
    Points : 221
    Points
    221

    Par défaut

    Citation Envoyé par vohufr Voir le message
    non, j'ai fait l'interface avec glade. Et j'ai biensur donné les noms que j'ai donné ci dessus à mes widjets
    Tu peux essayer avec g_object_set_data:
    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
    #include <gtk/gtk.h>
     
    static void
    clicked_cb (GtkWidget *widget, gpointer data)
    {
    	const gchar *s_data;
    	s_data = g_object_get_data (G_OBJECT(widget), "A key");
    	g_print ("%s\n", s_data);
    }
     
    int
    main (int argc, char *argv[])
    {
    	GtkWidget *window;
    	GtkWidget *button;
     
    	gtk_init (&argc, &argv);
     
    	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    	g_signal_connect (G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
     
    	button = gtk_button_new_with_label ("Hello");
    	g_object_set_data (G_OBJECT(button), "A key", "Hello, World !");
    	g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(clicked_cb), NULL);
    	gtk_container_add (GTK_CONTAINER(window), button);
     
    	gtk_widget_show_all (window);
     
    	gtk_main ();
     
    	return 0;
    }

  5. #5
    Membre averti
    Inscrit en
    janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 329
    Points : 364
    Points
    364

    Par défaut

    Dans ce cas, c'est normal :
    Le nom donné dans Glade est une sorte d'identifiant utilisé en privé par libglade (ou GtkBuilder), censé être unique (sinon on ne s'y retrouverait pas...).
    Le nom obtenu par "get_name" est le nom utilisé notamment par les styles, donc quelque chose de très différent, puisqu'il est censé être le même pour tous les widgets du même type, sauf à vouloir leur appliquer un style particulier.

    Si tu veux accéder au widgets par leur nom Glade/GtkBuilder, utilise l'API de ces modules, par exemple : gtk_builder_get_object(...).

    Sinon, utilise la méthode proposée par artificier59.


    -

  6. #6
    Membre habitué

    Homme Profil pro
    Retraite
    Inscrit en
    octobre 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraite

    Informations forums :
    Inscription : octobre 2005
    Messages : 113
    Points : 185
    Points
    185
    Billets dans le blog
    1

    Par défaut

    la solution avec galde 3 et gtkbuilder

    ici un bout de code glade

    il faut avoir donné dans la propriété name le nom par défaut il n'y a rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                      <object class="GtkEntry" id="eNOM">
                        <property name="name">NOM</property> 
                        <property name="visible">True</property>
                        <property name="can_focus">True</property>
                        <property name="max_length">30</property>
                        <property name="width_chars">48</property>
                        <property name="primary_icon_tooltip_markup" translatable="yes">Veuillez remplir le champ NOM Obligatoire</property>
                      </object>
                      <packing>

    dans le source c/c++

    travaille avec gtkbuilder :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        const gchar   * p_name    = gtk_widget_get_name (GTK_WIDGET(eNOM));
    @bientôt

Discussions similaires

  1. Comment récupérer nom de domaine pris chez Lycos ?
    Par cortex024 dans le forum Domaines
    Réponses: 7
    Dernier message: 21/07/2009, 11h01
  2. récupérer nom de champs et type de champs
    Par jexl dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/03/2006, 13h49
  3. Réponses: 12
    Dernier message: 02/03/2006, 14h13
  4. [ADO.Net][C# 2.0]Comment récupérer nom colonne PrimaryKey?
    Par superbobo dans le forum Accès aux données
    Réponses: 1
    Dernier message: 18/01/2006, 17h34
  5. [ActionEvent] Récupérer nom du composant émetteur
    Par mouloude dans le forum Composants
    Réponses: 4
    Dernier message: 29/10/2004, 17h19

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