Précédent   Forum des professionnels en informatique > Général Développement > Programmation système > Linux > GTK
GTK Vos questions sur GTK sous Linux
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/11/2011, 15h55   #1
Candidat au titre de Membre du Club
 
Homme
Administrateur systèmes et réseaux
Inscription : octobre 2011
Messages : 34
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : octobre 2011
Messages : 34
Points : 13
Points : 13
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 :
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 :
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 :
1
2
 
Source : GtkEntry  // Texte : 5
vohufr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 23h07   #2
Membre éclairé
 
Inscription : janvier 2007
Messages : 329
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 329
Points : 328
Points : 328
Salut,

As-tu assigné un nom aux widgets avec gtk_widget_set_name avant ?
monnomamoi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 23h38   #3
Candidat au titre de Membre du Club
 
Homme
Administrateur systèmes et réseaux
Inscription : octobre 2011
Messages : 34
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : octobre 2011
Messages : 34
Points : 13
Points : 13
non, j'ai fait l'interface avec glade. Et j'ai biensur donné les noms que j'ai donné ci dessus à mes widjets
vohufr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 20h37   #4
Membre actif
 
Avatar de artificier59
 
Zaour
Étudiant - Réseaux & Télécommunications
Inscription : août 2009
Messages : 235
Détails du profil
Informations personnelles :
Nom : Zaour

Informations professionnelles :
Activité : Étudiant - Réseaux & Télécommunications

Informations forums :
Inscription : août 2009
Messages : 235
Points : 163
Points : 163
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 :
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;
}
artificier59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 23h34   #5
Membre éclairé
 
Inscription : janvier 2007
Messages : 329
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 329
Points : 328
Points : 328
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.


-
monnomamoi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h51.


 
 
 
 
Partenaires

Hébergement Web