Un début de réponse.
Chaque widget écoute un ou plusieurs signaux. Lorsqu'on ajoute un widget à son interface il faut indiquer pour le signal qui nous intéresse quelle fonction il faut exécuter. On appelle ces fonctions des callback en anglais dans le texte.
Pour ton code tu insère une entrée texte :
pEntry = gtk_entry_new();
Mais tu n'a spécifié aucun callback exécuté lorsqu'on valide ce que l'on a écrit dedans.
Les GtkEntry écoutent les signaux suivants :
1 2 3 4 5 6 7 8 9 10 11 12 13
| "activate" : Run Last / Action
"backspace" : Run Last / Action
"copy-clipboard" : Run Last / Action
"cut-clipboard" : Run Last / Action
"delete-from-cursor" : Run Last / Action
"icon-press" : Run Last
"icon-release" : Run Last
"insert-at-cursor" : Run Last / Action
"move-cursor" : Run Last / Action
"paste-clipboard" : Run Last / Action
"populate-popup" : Run Last
"preedit-changed" : Run Last / Action
"toggle-overwrite" : Run Last / Action |
Celui qui nous intéresse ici est le signal "activate". Pour ce signal on doit attaché un callback qui doit avoir le prototype suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| The "activate" signal
void user_function (GtkEntry *entry,
gpointer user_data) : Run Last / Action
A keybinding signal which gets emitted when the user activates the entry.
Applications should not connect to it, but may emit it with g_signal_emit_by_name() if they need to control activation programmatically.
The default bindings for this signal are all forms of the Enter key.
entry*:
The entry on which the signal is emitted
user_data*:
user data set when the signal handler was connected. |
Pour ton code on attache un callback comme suit:
1 2 3
| pEntry = gtk_entry_new();
// Attachement d'un callback au signal "activate" du pEntry
g_signal_connect(G_OBJECT(pEntry), "activate", G_CALLBACK(callback_entry_activate_event), NULL); |
Ensuite on crée la fonction callback associée:
1 2 3 4
| void callback_entry_activate_event (GtkEntry *entry, gpointer user_data)
{
g_print("Le GtkEntry a été validé. Le texte ecrit est : %s\n", gtk_entry_get_text(entry));
} |
Ce principe est bien sûr à appliquer à tout widget qui interagit avec l'utilisateur.
Ici a chaque écriture dans le GtkEntry et validation par la touche entrée le texte écrit s'affiche en console.
Partager