FAQ GTK+Consultez toutes les FAQ
Nombre d'auteurs : 10, nombre de questions : 101, dernière mise à jour : 22 février 2018 Ajouter une question
Cette faq a été réalisée à partir des questions fréquemment posées sur les forums de www.developpez.com et de l'expérience personnelle des auteurs.
Je tiens à souligner que cette faq ne garantit en aucun cas que les informations qu'elle propose sont correctes ; les auteurs font le maximum, mais l'erreur est humaine. Cette faq ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez devenir rédacteur, lisez ceci.
Sur ce, nous vous souhaitons une bonne lecture, L'équipe GTK+.
- Comment créer un GtkComboBox (liste déroulante) pour contenir du texte ?
- Comment effacer le contenu d'une combo box ?
- Comment récupérer le texte sélectionné ?
- Comment modifier le texte sélectionné ?
- Comment ajouter une entrée à une liste déroulante ?
- Comment sélectionner un item dans une liste déroulante ?
- Comment supprimer l'item sélectionné ?
Les GtkComboBox utilisent les GtkTreeModel afin de définir leur contenu (comme pour les GtkTreeView). Si vous souhaitez afficher uniquement du texte, la fonction gtk_combo_box_new_text permet de vous simplifier la tâche.
Code C : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | void combo_box_clear (GtkComboBox *p_combo_box) { GtkTreeModel *p_tree_model = NULL; g_return_if_fail (p_combo_box != NULL); p_tree_model = gtk_combo_box_get_model (p_combo_box); gtk_list_store_clear (GTK_LIST_STORE (p_tree_model)); } |
Pour récupérer le texte sélectionné dans une combo box, il existe la fonction gtk_combo_box_get_active_text mais elle n'est disponible que depuis la version 2.6 de GTK+, or les GtkComboBox existe depuis la 2.4. Voici une fonction qui fait le même travail :
Code C : | Sélectionner tout |
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 | #if GTK_CHECK_VERSION (2, 6, 0) #define combo_box_active_get_text(combo_box) gtk_combo_box_get_active_text (combo_box) #else char *combo_box_active_get_text (GtkComboBox *combo_box) { gchar *s_text = NULL; gboolean b_ret = FALSE; GtkTreeIter iter; g_return_val_if_fail (combo_box != NULL, s_text); b_ret = gtk_combo_box_get_active_iter (combo_box, &iter); if (b_ret) { GtkTreeModel *p_model = NULL; p_model = gtk_combo_box_get_model (combo_box); if (p_model != NULL) { gtk_tree_model_get (p_model, &iter, 0, &s_text, -1); } } return s_text; } #endif |
Code C : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | void gtk_combo_box_set_active_text (GtkComboBox *p_combo_box, const gchar *text){ gint i; gint nb_entry = 0; GtkTreeModel *p_tree_model = NULL; g_return_if_fail (p_combo_box); g_return_if_fail (text); p_tree_model = gtk_combo_box_get_model (p_combo_box); nb_entry = gtk_tree_model_iter_n_children (p_tree_model, NULL); for (i = 0; i < nb_entry; i++) { gtk_combo_box_set_active (p_combo_box, i); if (strcmp (gtk_combo_box_get_active_text (p_combo_box), text) == 0) { break; } } if (i == nb_entry) { gtk_combo_box_set_active (p_combo_box, 0); } } |
Code C : | Sélectionner tout |
1 2 3 4 | GtkComboBox *combo = NULL; const gchar *text = "Entree n+1"; gtk_combo_box_append_text (GTK_COMBO_BOX (combo), text); |
Par défaut aucun item n'est sélectionné. Une case vide s'affiche donc au démarrage. Pour éviter cette case vide, il est possible de sélectionner un item.
On désigne l'item sélectionné grâce à la fonction suivante :
Code C : | Sélectionner tout |
1 2 3 4 5 | GtkComboBox *combo = NULL; gint pos = 0; /* ... */ gtk_combo_box_set_active (GTK_COMBO_BOX (combo), pos); |
Code C : | Sélectionner tout |
1 2 3 4 5 6 | GtkComboBox *combo = NULL; gint pos = 0; /* ... */ pos = gtk_combo_box_get_active (GTK_COMBO_BOX (combo)); gtk_combo_box_remove_text (GTK_COMBO_BOX (combo), pos); |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.