Bonjour
je suis debutant en c et pour realiser un petit programme perso , j ai decouvert gtk ,mais je rencontre de nombreux problemes que je vous soumet au fur et a mesure que je bloque dessus
aujourd hui ,j ai decidé de modifier l aspect des textes presents dans mon programme;pour ce faire j ai donc compris que pour faire cela ,il fallait passer en utf 8 et ensuite mettre des balises pour ,par exemple ,changer la couleur,la police ,mettre en gras;je me suis donc inspiré du programme suivant ,trouvé sur un site
cela va tres bien;mais moi ,je veux que le texte soit issu d un tableau de char , et que ce soit la chaine entrée dans ce tableau qui soit inscrite dans ma fenetre ;donc ,pour essayer , j ai modifié le programme si dessus en ceci
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
27
28
29
30
31
32
33 #include <stdlib.h> #include <gtk/gtk.h> int main(int argc,char **argv) { GtkWidget* Fenetre = NULL; GtkWidget* Label = NULL; gchar* TexteConverti = NULL; gtk_init(&argc, &argv); Fenetre = gtk_window_new(GTK_WINDOW_TOPLEVEL); // Définition de la fenêtre gtk_window_set_title(GTK_WINDOW(Fenetre), "Le texte avec les labels"); // Titre de la fenêtre gtk_window_set_default_size(GTK_WINDOW(Fenetre), 300, 100); // Taille de la fenêtre TexteConverti = g_locale_to_utf8("<span face=\"Verdana\" foreground=\"#73b5ff\" size=\"xx-large\"><b> coucou</b></span>\n", -1, NULL, NULL, NULL); //Convertion du texte avec les balises Label=gtk_label_new(TexteConverti); // Application de la convertion à notre label g_free(TexteConverti); // Libération de la mémoire gtk_label_set_use_markup(GTK_LABEL(Label), TRUE); // On dit que l'on utilise les balises pango gtk_label_set_justify(GTK_LABEL(Label), GTK_JUSTIFY_CENTER); // On centre notre texte gtk_container_add(GTK_CONTAINER(Fenetre), Label); // On ajoute le label a l'interieur de 'Fenetre' gtk_widget_show_all(Fenetre); // On affiche 'Fenetre' et tout ce qu'il contient g_signal_connect(G_OBJECT(Fenetre), "delete-event", G_CALLBACK(gtk_main_quit), NULL); // Je ne commente pas cette fonction, vous la verrez dans le chapitre suivant. gtk_main(); return EXIT_SUCCESS; }
je n est trouvé nul part comment il fallait faire pour que mon char "bof" soit pris en compte comme tel dans la ligne de conversion;j ai essayé au pif , les crochets et autres petits trucs comme cela ,mais rien n y fait ;alors si vous avez une idée,merci de votre aide
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
27
28
29
30
31
32
33
34 #include <stdlib.h> #include <gtk/gtk.h> int main(int argc,char **argv) { GtkWidget* Fenetre = NULL; GtkWidget* Label = NULL; gchar* TexteConverti = NULL; char bof[]="c est pas bon";// le char avec le texte a afficher gtk_init(&argc, &argv); Fenetre = gtk_window_new(GTK_WINDOW_TOPLEVEL); // Définition de la fenêtre gtk_window_set_title(GTK_WINDOW(Fenetre), "Le texte avec les labels"); // Titre de la fenêtre gtk_window_set_default_size(GTK_WINDOW(Fenetre), 300, 100); // Taille de la fenêtre TexteConverti = g_locale_to_utf8("<span face=\"Verdana\" foreground=\"#73b5ff\" size=\"xx-large\"><b> bof</b></span>\n", -1, NULL, NULL, NULL); //ici ,coucou est remplacé par bof Label=gtk_label_new(TexteConverti); // Application de la convertion à notre label g_free(TexteConverti); // Libération de la mémoire gtk_label_set_use_markup(GTK_LABEL(Label), TRUE); // On dit que l'on utilise les balises pango gtk_label_set_justify(GTK_LABEL(Label), GTK_JUSTIFY_CENTER); // On centre notre texte gtk_container_add(GTK_CONTAINER(Fenetre), Label); // On ajoute le label a l'interieur de 'Fenetre' gtk_widget_show_all(Fenetre); // On affiche 'Fenetre' et tout ce qu'il contient g_signal_connect(G_OBJECT(Fenetre), "delete-event", G_CALLBACK(gtk_main_quit), NULL); // Je ne commente pas cette fonction, vous la verrez dans le chapitre suivant. gtk_main(); return EXIT_SUCCESS; }
Partager