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 :

Rendre invisible un GtkEntry


Sujet :

GTK+ avec C & C++

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 310
    Par défaut Rendre invisible un GtkEntry
    Bonjour!
    J'utilise glade pour faire des interfaces graphique; jaimerai savoir comment rendre invisible un GtkEntry lorsqu'on affiche la fenetre le contenant et comment faire pour le réafficher quand on clique sur un bouton.
    D'avance merci!

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,

    Soit tu utilise la fonction gtk_widget_hide après avoir affiché la fenêtre, soit tu utilise gtk_widget_no_show_all avant de faire appel à la fonction gtk_widget_show_all.

    Pour le réafficher, il suffit d'utiliser la fonction gtk_widget_show.

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 310
    Par défaut
    bonjour!
    j'ai utilisé gtk_widget_hide mais je n'arrive toujours pas.
    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    g_signal_connect (gtk_builder_get_object (p_builder, "buttonOK"),
    "clicked", G_CALLBACK (gtk_widget_hide),
     (gpointer) (GtkWidget*)(gtk_builder_get_object (p_builder, "entry1")) );
    quand je clique sur buttonOK la zone de texte entry1 devait disparaitre mais c'est plutot le bouton qui disparait.

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Oui, le callback sera appelé avec comme premier argumetn l'objet qui a reçu le signal, c'est à dire le bouton, donc gtk_widget_hide est appelé avec le bouton comme argument, donc le bouton disparaît. Essaie avec g_signal_connect_swapped

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 310
    Par défaut
    Citation Envoyé par teuf13 Voir le message
    ...g_signal_connect_swapped
    g_signal_connect_swapped marche bien

    J'ai ajouter un GtkSpinButton a ma fenetre. a la compilation j'ai pas d'erreur mais quand, j'exécute le programme,j'ai ceci commme erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (a.out:10039): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated
    cela peut être du à quoi?

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 310
    Par défaut
    Citation Envoyé par rolls Voir le message
    g_signal_connect_swapped marche bien

    J'ai ajouter un GtkSpinButton a ma fenetre. a la compilation j'ai pas d'erreur mais quand, j'exécute le programme,j'ai ceci commme erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (a.out:10039): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated
    cela peut être du à quoi?
    l'erreur était due aux paramètres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    page_increment
    page_size
    je les ai tous mis à zéro et ça passe sans problème.

  7. #7
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 310
    Par défaut
    Excusez moi je reviens sur le probleme ci dessous.

    Citation Envoyé par rolls Voir le message
    bonjour!
    j'ai utilisé gtk_widget_hide mais je n'arrive toujours pas.
    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    g_signal_connect (gtk_builder_get_object (p_builder, "buttonOK"),
    "clicked", G_CALLBACK (gtk_widget_hide),
     (gpointer) (GtkWidget*)(gtk_builder_get_object (p_builder, "entry1")) );
    quand je clique sur buttonOK la zone de texte entry1 devait disparaitre mais c'est plutot le bouton qui disparait.
    .

    la solution est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    g_signal_connect_swapped (gtk_builder_get_object (p_builder, "buttonOK"),"clicked", G_CALLBACK (gtk_widget_hide),
             (gpointer) (GtkWidget*)(gtk_builder_get_object (p_builder, "entry1")));
    Maintenant j'aimerai savoir comment procerder pour rendre invisible plus d'un GTKENTRY.

    Monidée c'est de créer une fonction que j'appelerai dans le G_CALLBACK .Seulement je ne sais pas quoi mettre dans le dernier paramètre de g_signal_connect_swapped

  8. #8
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259

  9. #9
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 310
    Par défaut
    Bonjour teuf13.
    J'ai vu la faq mais je ne comprend pas très bien.
    Voici ce que j'ai pu faire
    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
     
    GtkWidget * p_win00 = (GtkWidget *) gtk_builder_get_object (p_builder, "Element40");
    GtkWidget * p_win01 = (GtkWidget *) gtk_builder_get_object (p_builder, "Element41");
    GtkWidget * p_win02 = (GtkWidget *) gtk_builder_get_object (p_builder, "Element42")
    GtkWidget * p_win03 = (GtkWidget *) gtk_builder_get_object (p_builder, "Element43");
    GtkWidget * p_win04 = (GtkWidget *) gtk_builder_get_object (p_builder, "Element44");
     
    g_signal_connect_swapped (gtk_builder_get_object (p_builder, "buttonOK"),"clicked", G_CALLBACK (gtk_widget_hide),
             (gpointer) p_win00);
    g_signal_connect_swapped (gtk_builder_get_object (p_builder, "buttonOK"),"clicked", G_CALLBACK (gtk_widget_hide),
             (gpointer) p_win01);
    g_signal_connect_swapped (gtk_builder_get_object (p_builder, "buttonOK"),"clicked", G_CALLBACK (gtk_widget_hide),
             (gpointer) p_win02);
    g_signal_connect_swapped (gtk_builder_get_object (p_builder, "buttonOK"),"clicked", G_CALLBACK (gtk_widget_hide),
             (gpointer) p_win03);
    g_signal_connect_swapped (gtk_builder_get_object (p_builder, "buttonOK"),"clicked", G_CALLBACK (gtk_widget_hide),
             (gpointer) p_win04);
    Ce n'est pas très professionnel car pour chaque GTKENTRY je fais un crée un signal g_signal_connect_swapped

  10. #10
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    La FAQ dit de mettre tous tes widgets dans une structure (un tableau conviendrait aussi dans ton cas) et d'utiliser un pointeur sur cette structure comme argument "utilisateur" à g_signal_connect. Ensuite, tu écris toi même un callback qui va récupérer les widgets dans la structure et appelle gtk_widget_hide sur chacun de ces widgets.

  11. #11
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 310
    Par défaut
    Bonsoir!
    Je comprend maintenant l'idée générale du tuto;seulement il y'a quelque zone d'ombre:

    code du tuto:
    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
     
    /* Notre classe MyWindow héritant de GtkWindow */
    typedef struct
    {
      GtkWindow parent;
     
      /* Les widgets composant notre fenêtre que nous souhaitons cacher */
      GtkWidget* widget1;
      Gtkwidget* widget2;
    } MyWindow;
     
    /* Notre fonction qui cache les differents elements */
    void hide_element (GtkWidget* sender, gpointer data)
    {
      /* On commence par récuperer l'instance de notre classe */
      MyWindow* self = data;
     
      gtk_widget_hide (self->widget1);
      gtk_widget_hide (self->widget2);
    }
     
    int main (int argc, char** argv)
    {
      GtkWidget my_window = my_window_new ();
     
      GtkWidget button = gtk_button_new ();
      g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (hide_element), my_window);
     
      /* ... */
    }
    D'abord au niveau du main je ne comprend pas cette déclaration:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GtkWidget my_window = my_window_new ();
    Ensuite lorsque je compile j'ai cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    undefined reference to `my_window_new'
    et efin je ne voie pas le rapport entre la structure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    typedef struct
    {
      GtkWindow parent;
     
      /* Les widgets composant notre fenêtre que nous souhaitons cacher */
      GtkWidget* widget1;
      Gtkwidget* widget2;
    } MyWindow;
    et

Discussions similaires

  1. Rendre invisible les valeurs passant par l'URL
    Par Jones dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 09/11/2004, 11h50
  2. [POO] Rendre invisible un objet Flash en Javascript
    Par tafkap dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/10/2004, 19h39
  3. Réponses: 10
    Dernier message: 19/05/2004, 15h44
  4. Comment rendre invisible un TTabbedNotebook.Pages ?
    Par Chonchon dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/04/2004, 20h14
  5. comment rendre invisible une FormStyle->fsMDIchild
    Par caluloa dans le forum C++Builder
    Réponses: 5
    Dernier message: 16/05/2003, 14h21

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