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 :

Boites de dialogue ou fenetres ?


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 87
    Par défaut Boites de dialogue ou fenetres ?
    Bonjour,
    j'ai une application GTK, avec une fenetre principale, crée comme ceci donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    Et tout ce qu'il faut ensuite pour l'affichage. Ca marche jusqu'au moment ou je crée une boite de dialogue. Ma boite de dialogue est vraiment plus qu'un simple "voulez faire ca ? oui ou non", et nottament elle crée d'autres boites de dialogues. Et c'est à ce niveau que j'ai un problème lors de l'execution de mon programme, avec un jolie warning :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    (31701): Gtk-WARNING **: Attempting to add a widget with type GtkDialog to a GtkWindow, but as a GtkBin subclass a GtkWindow can only contain one widget at a time; it already contains a widget of type GtkVBox
     
    (31701): Gtk-CRITICAL **: gtk_box_pack_start: assertion `child->parent == NULL' failed
     
    (31701): Gtk-CRITICAL **: gtk_box_pack_start: assertion `child->parent == NULL' failed
    J'ai cherché dans mon code source et je pense que ca doit venir d'ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    gtk_container_add(GTK_CONTAINER(win), boitedialogue1);
    ...
    gtk_container_add(GTK_CONTAINER(win), boitedialogue2);
    En effet je lie toutes mes boites de dialogues à la fenetre principale, ce qui est apparemment pas possible (une boite par fenetre principale ?), d'ou mon interrogation, comment résoudre ce problème, en créant de nouvelles fenetres ?

    Et comme vous avez pu le voir, j'ai 3 warning à l'execution, cela vient également du code ci dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    gtk_dialog_add_action_widget (GTK_DIALOG(pabout),buttonok,1);
     
    gtk_dialog_add_action_widget (GTK_DIALOG(pabout),buttonno,0);
     
    ...
     
     
    gtk_box_pack_start(GTK_BOX(GTK_DIALOG(pabout)->action_area), buttonok, TRUE, TRUE, 1);
     
    gtk_box_pack_start(GTK_BOX(GTK_DIALOG(pabout)->action_area), buttonno, TRUE, TRUE, 0);
    Ce code crée des boutons, leur donne une action quand on clique dessus (gtk_dialog_add_action_widget) (1 pour le bouton buttonok ...) et ensuite insére ces boutons dans l'action_area de la boite de dialogue.

    La aussi c'est meme genre de problème, le widget (un bouton en l'occurrence) buttonok ne peut etre ajouté que dans un seul containeur ou quelque chose comme ca. Or meme si je suis d'accord avec le warning, (ajouter un widget qu'a un seul containeur), je suis bien obligé de faire ce que j'ai fait ci dessus, ca m'a l'air d'etre le minimum pour que ma boite de dialogue marche (lui ajouter des boutons et leur donner une action) !

    J'arrive pas à m'en sortir !

    Merci de votre aide.

  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
    En effet, tu as compris qu'une fenêtre principale ne peut contenir qu'un seul widget. Alors comment faire?

    Il existe des widgets un peu particuliers. Il sont eux-mêmes des conteneurs dans lequels tu peux agencer plusieurs autres widgets. Je te les liste ici :
    • GtkBox
    • GtkTable
    • GtkPaned
    • GtkFixed
    • ...

    Ensuite pour continuer sur ma lancée, oui il faut ouvrir d'autres fenêtres lorsque tu veux utiliser les GtkDialog. Ils sont eux aussi des fenêtres principales. Regarde la doc officielle. Il y a un exemple d'utilisation dedans.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 87
    Par défaut
    Bonjour,

    je veux bien le lien vers l'exemple car je ne l'ai pas trouvé

    J'ai essayé de créer une deuxième fenetre et d'y lier une boite de dialogue mais sans succès

    Merci

  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
    Regarde les explications du descriptif et l'exemple en dessous. Il ne faut pas créer une fenêtre puis y attacher un GtkDialog. Un GtkDialog EST une fenêtre.

    Description GtkDialog

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 87
    Par défaut
    Ah d'accord,

    effectivement je pensais qu'il fallait lier tout widget a la fenetre principale ou a des widget eux meme liés a la fenetre principale.

    C'est pourquoi je faisais un :
    gtk_container_add(GTK_CONTAINER(win), pabout);

    Merci c'est résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. afficher boite de dialogue à la fermeture de la fenetre
    Par frboyer dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 10/08/2011, 17h15
  2. Réponses: 4
    Dernier message: 07/07/2009, 13h29
  3. Réponses: 4
    Dernier message: 30/03/2007, 11h12
  4. Réponses: 5
    Dernier message: 04/04/2003, 15h02
  5. Comment cree une boite de dialogue parcourir
    Par kenshi dans le forum MFC
    Réponses: 5
    Dernier message: 06/01/2003, 10h30

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