IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

Ajouter un label à une box en passant par une fonction CALLBACK


Sujet :

GTK+ avec C & C++

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Ajouter un label à une box en passant par une fonction CALLBACK
    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 : 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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    #include <stdlib.h>
    #include <gtk/gtk.h>
    #include "prototypes.h"
    #include "callback.h"
     
    int main (int argc, char **argv)
    {
        // DECLARATIONS DE VARIABLES
            // GtkWidgets globaux :
            GtkWidget *fenetre_principale = NULL,*vBox_princ = NULL;
            GSList *pack = NULL;
            // Widgets de la barre de menu :
            GtkWidget *menuBar = NULL,*menu = NULL,*MenuItem = NULL;
     
        gtk_init(&argc,&argv);
     
        // Création de la fenetre principale
        fenetre_principale = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_position(GTK_WINDOW(fenetre_principale),GTK_WIN_POS_CENTER);
        gtk_window_set_title(GTK_WINDOW(fenetre_principale),"Projet NUEVA");
        gtk_window_set_default_size(GTK_WINDOW(fenetre_principale),700,400);
        g_signal_connect(G_OBJECT(fenetre_principale),"delete_event",G_CALLBACK(Quitter_event),(GtkWidget *)fenetre_principale);
     
        // Création de la vBox_princ
        vBox_princ = gtk_vbox_new(FALSE,0);
        gtk_container_add(GTK_CONTAINER(fenetre_principale),vBox_princ);
     
        pack = g_slist_append (pack,(GtkWidget *)fenetre_principale);
        pack = g_slist_append (pack,(GtkWidget *)vBox_princ);
     
        // Création de la barre de menu
        menuBar = gtk_menu_bar_new();
            // MENU FICHIER
            menu = gtk_menu_new();
                //Bouton Ouvrir
                MenuItem = gtk_menu_item_new_with_mnemonic("_Ouvrir");
                gtk_menu_shell_append(GTK_MENU_SHELL(menu),MenuItem);
                g_signal_connect(G_OBJECT(MenuItem),"activate",G_CALLBACK(Ouvrir),(GSList *)pack);
                //Bouton Quitter
                MenuItem = gtk_menu_item_new_with_mnemonic("_Quitter");
                gtk_menu_shell_append(GTK_MENU_SHELL(menu),MenuItem);
                g_signal_connect(G_OBJECT(MenuItem),"activate",G_CALLBACK(Quitter_quit),(GSList *)pack);
                // Création du GTKItem Fichier
                MenuItem = gtk_menu_item_new_with_mnemonic("_Fichier");
                gtk_menu_item_set_submenu(GTK_MENU_ITEM(MenuItem),menu);
                gtk_menu_shell_append(GTK_MENU_SHELL(menuBar),MenuItem);
     
            // MENU ?
            menu = gtk_menu_new();
                //Bouton En savoir Plus
                MenuItem = gtk_menu_item_new_with_label("En savoir plus ...");
                gtk_menu_shell_append(GTK_MENU_SHELL(menu),MenuItem);
                g_signal_connect(G_OBJECT(MenuItem),"activate",G_CALLBACK(Infos),(GSList *)pack);
                // Création du GTKItem Fichier
                MenuItem = gtk_menu_item_new_with_label("?");
                gtk_menu_item_set_submenu(GTK_MENU_ITEM(MenuItem),menu);
                gtk_menu_shell_append(GTK_MENU_SHELL(menuBar),MenuItem);
     
        gtk_box_pack_start(GTK_BOX(vBox_princ),menuBar,FALSE,FALSE,0);
     
        // Affichage de la fenetre et de ses composants
        gtk_widget_show_all(fenetre_principale);
     
        gtk_main ();
     
        return EXIT_SUCCESS;
    }
     
    void Ouvrir (GtkWidget *widget,GSList *pack) {
     
        GtkWidget *label=NULL,*box=NULL;
        GSList *temp_list=NULL;
     
        temp_list = g_slist_nth(pack, 1);
        box = GTK_WIDGET(temp_list->data);
     
        label = gtk_label_new("ok");
        gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0);
        gtk_widget_show(box);
     
    }
    Merci à vous

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Salut, je suis aussi un débutant sur gtk+ (voir même la programmation en générale )
    Cependant essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_widget_show_all(box);
    au lieu de

Discussions similaires

  1. Réponses: 6
    Dernier message: 20/01/2012, 09h58
  2. Réponses: 7
    Dernier message: 26/03/2008, 17h20
  3. [Oracle] Insertion d'un blob en passant par une procédure stockée
    Par choubiroute dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/03/2006, 18h34
  4. Réponses: 12
    Dernier message: 21/10/2005, 14h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo