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 :

Deux Gtk_entry éxecutés par un seul bouton


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 15
    Par défaut Deux Gtk_entry éxecutés par un seul bouton
    Bonjour à tous,

    Je voudrais créer un code, qui sera censé enregistré les valeurs de deux zone de saisi, quand on appuie sur un bouton, mais je n'arrive pas a le faire.

    Pourriez-vous m'aider a coder la partie qui envoit les 2 gchar des zones de saisi quand on appuie sur le bouton?

    Voici mon code

    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
    82
    83
    84
    85
     
     
    struct _MainWindow
    {
        GtkWidget *pWindow;
     
        GtkWidget *pEntry;
        GtkWidget *pButton;
        GtkWidget *pLabel;
        GtkWidget *pEntry2;
    };
     
    typedef struct _MainWindow MainWindow;
     
    /* Fonction callback execute lors du signal "activate" */
    void OnUpdate(GtkWidget *pEntry, *pEntry2, gpointer data)
    {
        const gchar *sText;
        const gchar *sText2;
        MainWindow *pApp;
     
        /* Recuperation de data */
        pApp = (MainWindow*) data;
     
        /* Recuperation du texte contenu dans le GtkEntry */
        sText = gtk_entry_get_text(GTK_ENTRY(pApp->pEntry));
        sText2 = gtk_entry_get_text(GTK_ENTRY(pApp->pEntry2));
     
    }
     
     
    /* Fenetre Enregistrer */
    main FenetreTest(int argc, char **argv)
    {
     
        GtkWidget *pTable; // Déclaration de la table 
     
        MainWindow *pApp;
     
        gtk_init(&argc, &argv);
     
        pApp = g_malloc(sizeof(MainWindow));
     
        pApp->pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(pApp->pWindow), "Le widget GtkEntry");
        gtk_window_set_default_size(GTK_WINDOW(pApp->pWindow), 900, 500);
        g_signal_connect(G_OBJECT(pApp->pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
     
        /* Creation et insertion de la table 10 lignes 10 colonnes */
        pTable=gtk_table_new(10,10,TRUE);
        gtk_container_add(GTK_CONTAINER(pApp->pWindow), GTK_WIDGET(pTable));
     
        /* Creation du GtkEntry */
        pApp->pEntry = gtk_entry_new();
        pApp->pEntry2 = gtk_entry_new();
     
        /* Creation du Bouton */
        pApp->pButton = gtk_button_new_with_label("Valider");
     
       /* Creation du label */
        pApp->pLabel = gtk_label_new(NULL);
     
     
     
     
     /* Insertion des boutons, labels, et GtkEntry*/
        gtk_table_attach_defaults(GTK_TABLE(pTable), pApp->pButton, 4, 6, 5, 6);
        gtk_table_attach_defaults(GTK_TABLE(pTable), pApp->pEntry, 2, 4, 3, 4);
        gtk_table_attach_defaults(GTK_TABLE(pTable), pApp->pLabel, 4, 6, 7, 8);
        gtk_table_attach_defaults(GTK_TABLE(pTable), pApp->pEntry2, 6, 8, 3, 4);
     
     
     
    /* ?????????????????????????????????????????? */
     
     
     
        gtk_widget_show_all(pApp->pWindow);
     
        gtk_main();
     
        g_free(pApp);
     
        return EXIT_SUCCESS;
    }
    La partie ou je demande mon aide est celle avec les points d'interrogations.


    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Il ne te manque dans ton code que l'attachement du callback au bouton valider:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g_signal_connect(G_OBJECT(pApp->pButton), "clicked", G_CALLBACK(OnUpdate), pApp);
    Par contre la fonction Onupdate doit être de ce type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    The "clicked" signal
     
    void                user_function                      (GtkButton *button,
                                                            gpointer   user_data)      : Run First / Action
    Emitted when the button has been activated (pressed and released).
     
    button*:
     
    the object that received the signal
    user_data*:
     
    user data set when the signal handler was connected.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 15
    Par défaut
    Bonjour,

    Merci pour t'as réponse, mais peux tu m'expliquer comment je lie d'abords, les deux Gtk_entry au bouton?

    De plus pourrais-tu me détailler les différents arguments données a la fonction, OnUpdate?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (GtkButton *button, gpointer   user_data)
    Voila, Merci d'avance

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    GtkButton *button est le pointeur du bouton qui a recu le signal "clicked.
    gpointer user_data est la donnée utilisateur transmise avec la fonction g_signal_connect. (le dernier argument).

    Comment lier les GtkEntry au bouton? Je ne comprends pas très bien la question.

    Disons que tel que tu as écrit ton programme, les pointeurs des GtkEntry sont accessibles dans la structure *pApp. Comme on la transmet à OnUpdate (le user_data), tu peux récupérer leur valeur respective et en faire ce que tu veux.

Discussions similaires

  1. Deux tableaux modifié par une seule affectation ?
    Par Vespiras dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 16/09/2013, 10h35
  2. appeller deux Fonctions JS dans un seul bouton
    Par zinat dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/07/2011, 15h22
  3. Réponses: 6
    Dernier message: 01/07/2011, 17h09
  4. Réponses: 3
    Dernier message: 24/08/2008, 20h45
  5. Réponses: 3
    Dernier message: 18/09/2006, 18h30

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