Bonjour à tous,

J'aimerais pouvoir pouvoir changer un widget label en un widget entry en cliquant sur un bouton. Au passage le bouton cliqué est remplacé par un autre bouton. J'ai déjà écrit un code mais malheuresement quand je clique sur le bouton, je n'obtiens que le label de base, le widget entry et le le nouveau bouton ne s'affichent pas.
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
#include <gtk/gtk.h>
#include <stdlib.h>
 
void onBtnModifier(GtkWidget* pWidget, gpointer data);
struct mainWindow
{
    GtkWidget* pWindow;
    GtkWidget* pLabel;
    GtkWidget* pEntry;
    GtkWidget* pHbox;
    GtkWidget* pBtnModifier;
    GtkWidget* pBtnAppliquer;
};
typedef struct mainWindow mainWindow;
int main(int argc,char **argv)
{
    GtkWidget* pLabelBase;
    mainWindow* pMain;
    gtk_init(&argc,&argv);
    pMain = (mainWindow*)g_malloc(sizeof(mainWindow));
    //Creation d'un pointeur de la structure mainWindow
    pMain->pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    //Creation de la fenetre principale
    gtk_window_set_default_size(GTK_WINDOW(pMain->pWindow),100,200);
    gtk_window_set_title(GTK_WINDOW(pMain->pWindow), "Test Label To Entry");
 
    pLabelBase = gtk_label_new("Titre : ");
    pMain->pLabel = gtk_label_new("Titre de base");
    pMain->pBtnModifier = gtk_button_new_with_label("Modifier");
    pMain->pHbox = gtk_hbox_new(TRUE,2);
    gtk_box_pack_start(GTK_BOX(pMain->pHbox),pLabelBase, TRUE,FALSE,0);
    gtk_box_pack_start(GTK_BOX(pMain->pHbox),pMain->pLabel, TRUE,FALSE,0);
    gtk_box_pack_start(GTK_BOX(pMain->pHbox),pMain->pBtnModifier, TRUE,FALSE,0);
    //Ajout des widgets dans pHbox
 
    g_signal_connect(G_OBJECT(pMain->pWindow),"destroy",G_CALLBACK(gtk_main_quit),NULL);
    g_signal_connect(G_OBJECT(pMain->pBtnModifier),"clicked",G_CALLBACK(onBtnModifier),(gpointer*) pMain);
 
    gtk_container_add(GTK_CONTAINER(pMain->pWindow),pMain->pHbox);
    //Ajout de la hbox pHbox dans la fenetre principale
    gtk_widget_show_all(pMain->pWindow);
 
    gtk_main();
 
    return EXIT_SUCCESS;
}
void onBtnModifier(GtkWidget* pWidget, gpointer data)
{
    const gchar* sText;
    mainWindow *pApp;
    pApp = (mainWindow*) data;
    sText = gtk_label_get_text(GTK_LABEL(pApp->pLabel));
 
    gtk_widget_destroy(pApp->pLabel);
    //Suppression du widget pLabel pour le remplacer par pEntry
    gtk_widget_destroy(pApp->pBtnModifier);
    //Suppression du widget pBtnModifier pour le remplacer par le widget pBtnAppliquer
    pApp->pEntry = gtk_entry_new();
    gtk_entry_set_text(GTK_ENTRY(pApp->pEntry),sText);
    pApp->pBtnAppliquer = gtk_button_new_with_label("Appliquer");
 
    gtk_box_pack_start(GTK_BOX(pApp->pHbox),pApp->pEntry,FALSE,FALSE,0);
    gtk_box_pack_start(GTK_BOX(pApp->pHbox),pApp->pBtnAppliquer,FALSE,FALSE,0);
    //Insertion des nouveaux widgets dans pHbox
}
En espérant avoir été assez clair
Merci d'avance