[GTK+] Ajouter un boutton a une fenetre grace à une fonction

Ajouter un boutton a une fenetre grace à une fonction [GTK+] - C - Programmation

Marsh Posté le 12-05-2009 à 15:42:46    

Bonsoir,
 
Je débute en GTK+, et je butte sur un point j'imagine fort simpliste, mais j'ai tout de même besoin de votre aide.
 
Ma question est simple, pourquoi mon label ne s'afiche pas dans ma fenêtre lorsque je clique sur le Menu OUVRIR ?
 

Code :
  1. #include <stdlib.h>
  2. #include <gtk/gtk.h>
  3. #include "prototypes.h"
  4. #include "callback.h"
  5. int main (int argc, char **argv)
  6. {
  7.     // DECLARATIONS DE VARIABLES
  8.         // GtkWidgets globaux :
  9.         GtkWidget *fenetre_principale = NULL,*vBox_princ = NULL;
  10.         GSList *pack = NULL;
  11.         // Widgets de la barre de menu :
  12.         GtkWidget *menuBar = NULL,*menu = NULL,*MenuItem = NULL;
  13.     gtk_init(&argc,&argv);
  14.     // Création de la fenetre principale
  15.     fenetre_principale = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  16.     gtk_window_set_position(GTK_WINDOW(fenetre_principale),GTK_WIN_POS_CENTER);
  17.     gtk_window_set_title(GTK_WINDOW(fenetre_principale),"Projet NUEVA" );
  18.     gtk_window_set_default_size(GTK_WINDOW(fenetre_principale),700,400);
  19.     g_signal_connect(G_OBJECT(fenetre_principale),"delete_event",G_CALLBACK(Quitter_event),(GtkWidget *)fenetre_principale);
  20.     // Création de la vBox_princ
  21.     vBox_princ = gtk_vbox_new(FALSE,0);
  22.     gtk_container_add(GTK_CONTAINER(fenetre_principale),vBox_princ);
  23.     pack = g_slist_append (pack,(GtkWidget *)fenetre_principale);
  24.     pack = g_slist_append (pack,(GtkWidget *)vBox_princ);
  25.     // Création de la barre de menu
  26.     menuBar = gtk_menu_bar_new();
  27.         // MENU FICHIER
  28.         menu = gtk_menu_new();
  29.             //Bouton Ouvrir
  30.             MenuItem = gtk_menu_item_new_with_mnemonic("_Ouvrir" );
  31.             gtk_menu_shell_append(GTK_MENU_SHELL(menu),MenuItem);
  32.             g_signal_connect(G_OBJECT(MenuItem),"activate",G_CALLBACK(Ouvrir),(GSList *)pack);
  33.             //Bouton Quitter
  34.             MenuItem = gtk_menu_item_new_with_mnemonic("_Quitter" );
  35.             gtk_menu_shell_append(GTK_MENU_SHELL(menu),MenuItem);
  36.             g_signal_connect(G_OBJECT(MenuItem),"activate",G_CALLBACK(Quitter_quit),(GSList *)pack);
  37.             // Création du GTKItem Fichier
  38.             MenuItem = gtk_menu_item_new_with_mnemonic("_Fichier" );
  39.             gtk_menu_item_set_submenu(GTK_MENU_ITEM(MenuItem),menu);
  40.             gtk_menu_shell_append(GTK_MENU_SHELL(menuBar),MenuItem);
  41.         // MENU ?
  42.         menu = gtk_menu_new();
  43.             //Bouton En savoir Plus
  44.             MenuItem = gtk_menu_item_new_with_label("En savoir plus ..." );
  45.             gtk_menu_shell_append(GTK_MENU_SHELL(menu),MenuItem);
  46.             g_signal_connect(G_OBJECT(MenuItem),"activate",G_CALLBACK(Infos),(GSList *)pack);
  47.             // Création du GTKItem Fichier
  48.             MenuItem = gtk_menu_item_new_with_label("?" );
  49.             gtk_menu_item_set_submenu(GTK_MENU_ITEM(MenuItem),menu);
  50.             gtk_menu_shell_append(GTK_MENU_SHELL(menuBar),MenuItem);
  51.     gtk_box_pack_start(GTK_BOX(vBox_princ),menuBar,FALSE,FALSE,0);
  52.     // Affichage de la fenetre et de ses composants
  53.     gtk_widget_show_all(fenetre_principale);
  54.     gtk_main ();
  55.     return EXIT_SUCCESS;
  56. }
  57. void Ouvrir (GtkWidget *widget,GSList *pack) {
  58.     GtkWidget *label=NULL,*box=NULL;
  59.     GSList *temp_list=NULL;
  60.     temp_list = g_slist_nth(pack, 1);
  61.     box = GTK_WIDGET(temp_list->data);
  62.     label = gtk_label_new("ok" );
  63.     gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0);
  64.     gtk_widget_show(box);
  65. }


 
Merci à vous ;)

Reply

Marsh Posté le 12-05-2009 à 15:42:46   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed