Bonjour
Pour passer à GTK3, j'ai du utiliser "gtk_combo_box_new_with_model_and_entry" pour initialiser une combo box avec texte modifiable* . J'avais déjà un petit problème sous gtk2 => sûrement une mauvaise utilisation. Mais, avec gtk3, c'est inutilisable.
Avant, la liste que je proposais s'affichait en double. Maintenant, elle n'est présente qu'une fois. C'est mieux... mais... sur les deux affichages, c'est le second qui est resté et le premier qui est parti et quand on sélectionnait une entrée, visiblement, c'est le premier affichage qui est copié dans la combobox. Voici une copie du menu déroulant :
On voit bien à gauche une colonne vide de la même taille que la colonne de droite.
Lors de l'exécution, voici l'erreur qui s'affiche dans la console :
Voici tous les code à propos de cet affichage :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Gtk-CRITICAL **: gtk_entry_set_text: assertion `text != NULL' failed
D'où vient l'erreur ?
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 GtkCellRenderer * p_cell = NULL; GtkListStore * p_model_pan = gtk_list_store_new (1, G_TYPE_STRING); GtkWidget * p_combo_pantheon=gtk_combo_box_new_with_model_and_entry(GTK_TREE_MODEL(p_model_pan)); p_cell = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (p_combo_pantheon), p_cell, FALSE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (p_combo_pantheon),p_cell, "text", 0,NULL); gtk_list_store_append (p_model_pan, & iter); gtk_list_store_set (p_model_pan, & iter,0,"Aucun",-1); for(i=1;i<node->fils;i++) { gtk_list_store_append (p_model_pan, & iter); //gtk_list_store_set (p_model_pan, & iter,0, node->child[i].content->texte,-1); gtk_list_store_set (p_model_pan, & iter,0,node->child[i].content->texte,-1); } gtk_table_attach(GTK_TABLE(table_d), p_combo_pantheon, 0,8,1,2, GTK_EXPAND , GTK_EXPAND, 0, 0); gtk_combo_box_set_active (GTK_COMBO_BOX (p_combo_pantheon),0); g_signal_connect (G_OBJECT (p_combo_pantheon), "changed", G_CALLBACK (modif_pan), (gpointer) tparam);
* : le but est de proposer un certains nombres d'entrées prédéfinies, mais de laisser la possibilité d'en mettre une autre.
Partager