IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

gtk_combo_box_new_with_model_and_entry : problème d'affichage


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut gtk_combo_box_new_with_model_and_entry : problème d'affichage
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Gtk-CRITICAL **: gtk_entry_set_text: assertion `text != NULL' failed
    Voici tous les code à propos de cet affichage :
    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);
    D'où vient l'erreur ?

    * : le but est de proposer un certains nombres d'entrées prédéfinies, mais de laisser la possibilité d'en mettre une autre.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  2. #2
    Invité
    Invité(e)
    Par défaut
    Je ne suis pas sûr que le problème vienne de là.
    Tu as essayé de compiler ton application avec les options de debug et de le lancer avec "gdb ./application" puis "run --g-fatal-warnings" ? En examinant le tas, ça devrait t'aider à trouver l'origine de ton problème. En tout cas, tu trouveras ainsi la ligne de ton programme qui crée l'avertissement.

  3. #3
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    La ligne qui crée le problème c'est celle-là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_combo_box_set_active (GTK_COMBO_BOX (p_combo_pantheon),0);
    Je fais déjà du débuggage avec code::blocks. Ta méthode apporte t'elle quelque chose de plus ?

    Enfin, j'arrive à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Gtk-CRITICAL **: gtk_entry_set_text: assertion `text != NULL' failed
     
    Program received signal SIGTRAP, Trace/breakpoint trap.
    0x00007ffff5f2b7fb in g_logv () from /lib64/libglib-2.0.so.0
    et je ne sais que faire à part arrêter le système
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Et bien, le fait d'ajouter l'option --g-fatal-warnings comme argument à ton programme fait faire que --g-fatal-warnings va passer comme argument dans gtk_init et ainsi, tous les messages d'erreurs vont être considérés comme des erreurs terminant le programme. Sans cette option, on ne peut pas garantir que l'erreur qui fait apparaitre le Gtk-CRITICAL est la ligne où code::blocks s'arrête.

    Sinon, je ne vois pas vraiment. La seule erreur que j'ai vu est que la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p_cell = gtk_cell_renderer_text_new ();
    devrait être au dessus de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_cell_layout_pack_start
    et pas en dessous.

    Peut-être une piste...

  5. #5
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    BIen vu pour l'emplacement... C'était une erreur de la copie des lignes de mon programme vers ici : comme j'ai fait un tri, j'ai copié une à une les lignes ici et celle-là, je l'ai mal placé en la copiant.
    C'était déjà à la bonne place avant.

    Pour la ligne qui génère le message d'erreur lors de l'exécution, comme je fais du pas à pas, je vois quand l'erreur arrive.

    Par contre, je ne sais pas où mettre "--g-fatal-warnings" dans code::blocks !
    le linkeur me dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g++: erreur: unrecognized option ‘--g-fatal-warnings’
    Et le compiler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Compiling: callback_menu.c
    gcc: erreur: unrecognized option ‘--g-fatal-warnings’
    édit : je viens d'imposer gcc pour le linkeur et je n'ai plus cette erreur ! Mais, je ne sais toujours pas comment utiliser le débugger en ligne de commande !
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  6. #6
    Invité
    Invité(e)
    Par défaut
    En fait, --g-fatal-warnings n'est pas un argument pour gcc mais un argument pour ton programme. Comme tu initialises gtk avec la fonction gtk_init(&argc, &argv) l'argument passe alors également comme argument pour l'initialisation de gtk. En gros, il faut que tu lances ton application comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./application --g-fatal-warnings
    Pour passer des arguments à ton programme : http://www.developpez.net/forums/d83...us-code-block/

    Edit : Mais si tu me dis que tu fais du pas à pas, effectivement, tu es sûr que c'est bien cette ligne là qui pose problème.
    Dernière modification par Invité ; 14/01/2012 à 16h51.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'affichage
    Par mustang-gx dans le forum Bases de données
    Réponses: 8
    Dernier message: 26/01/2005, 22h54
  2. Problème d'affichage avec trace
    Par WriteLN dans le forum Flash
    Réponses: 10
    Dernier message: 22/10/2003, 16h59
  3. [Kylix] problème d'affichage
    Par scalvi dans le forum EDI
    Réponses: 1
    Dernier message: 18/06/2003, 10h07
  4. Réponses: 1
    Dernier message: 06/03/2003, 11h57
  5. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 09h43

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