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
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;
}
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
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;
}
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