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 :

Glade et héritage de GtkWindow


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut Glade et héritage de GtkWindow
    Bonjour,

    J'ai une classe YaogcPreferences qui hérite de GtkWindow, et qui est en quelques sorte une boite de dialogue et j'ai dessiné l'interface de cette boite de dialogue avec Glade.

    Seulement, je me pose une question, comment récupérer le toplevel à partir de mon GtkBuilder, car le toplevel c'est le widget dans lequel je suis, du coup je me demande même si c'est faisable

    Sinon, serait il plus judicieux de récupérer uniquement le container principal et de le mettre dans ma classe YaogcPreference ?

    Donc ben si quelqu'un à une petite idée, ça serait sympa
    Merci

  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
    Une idée parmi d'autres. Je suppose que l'interface dessiné avec Glade à tout de même un widget parent. Par exemple une GtkBox ou autre dans laquelle les autres widgets s'insèrent.

    A partir de là tu peux charger ton interface dans ta class et utiliser la fonction gtk_widget_set_parent(); pour affecter la GtkBox (pris pour exemple) à ta GtkWindow.

  3. #3
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    Ah, oui, pas bête, j'avais pas pensé au gtk_widget_set_parent, merci, je vais essayer comme ça

  4. #4
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    ça fonctionne pas, il me dit:
    (Yaogc:29861): Gtk-WARNING **: Can't set a parent on widget which has a parent
    Et quand je mets avant un gtk_widget_unparent sur le container, j'ai
    (Yaogc:31530): Gtk-WARNING **: mnemonic "n" wasn't removed for widget (0x69add0)

    (Yaogc:31530): Gtk-WARNING **: mnemonic "v" wasn't removed for widget (0x6f8820)
    Mais j'ai ces messages qu'a la fermeture de l'application.

    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
     
    struct _YaogcPreferencesPrivate {
        GtkBuilder *builder;
        GtkWidget *main_box;
     
        GFile *pref_file;
    };
     
    static void
    yaogc_preferences_init (YaogcPreferences *preferences)
    {
        YaogcPreferencesPrivate *priv;
        GError *error;
     
        preferences->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE (
                preferences, YAOGC_TYPE_PREFERENCE, YaogcPreferencesPrivate);
     
        gtk_window_set_title (GTK_WINDOW(preferences), "Yaogc Preferences");
        gtk_container_set_border_width (GTK_CONTAINER(preferences), 5);
     
        /* Creating GtkBuilder */
        priv->builder = gtk_builder_new ();
     
        /* Loading the glade-xml file */
        error = NULL;
        gtk_builder_add_from_file (priv->builder, "preferences.glade", &error);
     
        if (error) {
            g_error ("Unable to load glade-xml file: %s", error->message);
            g_error_free (error);
        }
     
        /* Getting the main container */
        priv->main_box = GTK_WIDGET (gtk_builder_get_object(priv->builder, "vbox1"));
        gtk_widget_unparent (priv->main_box);
        gtk_widget_set_parent (priv->main_box, GTK_WIDGET(preferences));
    }

  5. #5
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    Cela dit avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    gtk_widget_unparent (priv->main_box);
    gtk_container_add (GTK_CONTAINER(preferences), priv->main_box);
    ça fonctionne, mais est-ce que c'est la bonne méthode ?

  6. #6
    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
    Techniquement cela me semble correcte. Maintenant pour le principe je ne vois pas pourquoi tu n'utilises pas la fenêtre principale générée par Glade?

Discussions similaires

  1. [Glade-3] Ajouter une scrollbar à une GTKWindow
    Par cladjules dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 28/04/2009, 09h25
  2. [Postgresql]Héritage
    Par lheureuxaurelie dans le forum PostgreSQL
    Réponses: 13
    Dernier message: 02/10/2008, 09h18
  3. [XML Schemas]héritage multiple
    Par nicolas_jf dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 10/06/2003, 12h55
  4. [Postgres] Héritage + Clés
    Par k-reen dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 21/05/2003, 16h37
  5. Héritage entre Forms
    Par BarBal dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 17h44

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