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 .
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 .
Tu veux modifier la couleur du text de ta combobox ou de l'arriere plan de ta combobox ?
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.
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...;-)
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..
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()
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' .
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager