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 :

Modifier la couleure d'une liste a choix (combo box)


Sujet :

GTK+ avec C & C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 81
    Points : 39
    Points
    39
    Par défaut Modifier la couleure d'une liste a choix (combo box)
    Bonjour,

    je parviens a modifier la couleur de la plupart de mes widgets sauf les liste a choix .

    J'ai essayé ce qui est expliqué ici, mais sans succès.

    Je continu a chercher.

    Si vous avez la solution elle est vraiment bienvenue .

  2. #2
    Membre du Club

    Inscrit en
    Avril 2002
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Avril 2002
    Messages : 49
    Points : 43
    Points
    43
    Par défaut
    Tu veux modifier la couleur du text de ta combobox ou de l'arriere plan de ta combobox ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 81
    Points : 39
    Points
    39
    Par défaut
    salut,
    les deux en fait. Mais je viens de m'apercevoir de ceci
    http://fr.gnomesupport.org/forums/viewtopic.php?pid=106

    Je pense que le problème est le même.

    De toute façon comme je veux pouvoir modifier ma ComboBox, il va falloir (d'après le lien, mais il serais bien qu'il se trompe..) que je fabrique ce widget dans le code. Le problème je pense sera réglé , sinon je vous tiens au courant.

  4. #4
    Membre du Club

    Inscrit en
    Avril 2002
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Avril 2002
    Messages : 49
    Points : 43
    Points
    43
    Par défaut
    Mais non...

    Alors pour modifier le text dans ta combobox c'est pas ultra complique. Tu cree un renderer text que tu lui attache , puis de la tu modifie les proprietes de couleurs , de font ,etc.. du renderer text pour changer le texte de ta combobox.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // MaCombobox et color sont des object a definir
     
    GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
    gtk_cell_layout_clear(GTK_CELL_LAYOUT(MaCombobox));
    gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(MaCombobox), renderer, TRUE);
    gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(MaCombobox), renderer, "text", 0);
     
    g_object_set(G_OBJECT(renderer),"foreground-set",TRUE, NULL);
    g_object_set(G_OBJECT(renderer),"foreground-gdk",&color,NULL);

    Concernant la modification de la combobox elle meme je t'avouerais que je ne sais pas trop comment faire. C'est un probleme sur lequel je risque de travailler bientot : le changement de couleur de la plupart des composants GTK. Donc si tu trouve ca m'aidera sinon faudra que tu attente que je travail dessus pour avoir la reponse...;-)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 81
    Points : 39
    Points
    39
    Par défaut
    Salut,

    a cette ligne :

    GtkCellRendererText *renderer = gtk_cell_renderer_text_new();

    Je reçois une initialisation d'un pointeur incompatible ? Pourtant la ligne est clair.

    As tu une idée ?


    Sinon j'ai fait un tour ici : http://developer.gnome.org/doc/API/2...o-box-new-text

    Il manque terriblement une fonction pour changer le texte actif..

  6. #6
    Membre du Club

    Inscrit en
    Avril 2002
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Avril 2002
    Messages : 49
    Points : 43
    Points
    43
    Par défaut
    Arf oui en effet, gtk_cell_render_text_new() renvoi un objet de type GtkCellRenderer* et non pas GtkCellRendererText*. J'ai effectue la correction.

    Sinon pour changer le text actif d'une combobox c'est facile tu a juste a utiliser gtk_combo_box_set_active()

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 81
    Points : 39
    Points
    39
    Par défaut
    Alors comme j'ai quelques erreurs j'ai fait un exemple qui compile :
    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
    21
    22
    23
    24
    25
    26
     
    #include <stdio.h>
    #include <gtk/gtk.h>
     
    int main(int argc, char *argv[]) {
     
        gtk_init(&argc,&argv);
        GtkWidget *test = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title (GTK_WINDOW(test), "test");
        gtk_window_set_default_size(GTK_WINDOW(test), 300,25);
     
     
        GtkWidget *combo = gtk_combo_box_new_text ();
        gtk_container_add(GTK_CONTAINER(test), combo);
     
        gtk_combo_box_append_text (GTK_COMBO_BOX (combo), ("test"));    
     
        GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
        gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo), renderer, TRUE);
        gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(combo), renderer, "bonjour", 0);
     
     
        gtk_widget_show_all(test);
        gtk_main();
        return 0;
    }


    Et au lancement je reçois :

    (test2:11050): GLib-GObject-WARNING **: IA__g_object_set_property: object class `GtkCellRendererText' has no property named `bonjour' .

  8. #8
    Membre du Club

    Inscrit en
    Avril 2002
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Avril 2002
    Messages : 49
    Points : 43
    Points
    43
    Par défaut
    Oui c'est normal , l'erreur est clair , la propriete "bonjour" n'existe pas.

    Il ne faut pas remplacer "text" par un texte comme tu la fait. "text" est une propriete de GtkCellRenderer.

    Pour ajouter une ligne dans ta combobox il faut que tu creer un TreeModel que tu l'ajoute dans la combobox et que tu ajoute le text dans ta liststore ensuite.

Discussions similaires

  1. [PR-2002] Créer/Modifier/Supprimer une liste de choix
    Par aelmalki dans le forum Project
    Réponses: 6
    Dernier message: 27/01/2010, 17h39
  2. Modifier la couleur d'une liste déroulante.
    Par -Neo- dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 05/06/2007, 09h27
  3. Réponses: 4
    Dernier message: 21/09/2006, 14h58
  4. [C#] [DataGrid] Modifier la couleur d'une ligne
    Par nalaya dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/08/2004, 12h11
  5. Réponses: 8
    Dernier message: 05/05/2004, 16h28

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