1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    octobre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2012
    Messages : 7
    Points : 6
    Points
    6

    Par défaut fenetre de widgets vide

    Bonjour à toutes et tous,

    je travaille sur gtkmm en c++ avec codeblock.
    J'ai d'abord fait un fichier unique pour ouvrir une fenêtre avec un conteneur table rempli de widgest, ça fonctionne plutôt bien:

    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
    86
    87
    88
    89
    90
    //#include <gtkmm/Label.h>
    #include <gtkmm/main.h>
    #include <gtkmm/table.h>
    #include <gtkmm/label.h>
    #include <gtkmm/window.h>
    #include <gtkmm/curve.h>
    #include <gtkmm/button.h>
    #include <gtkmm/stock.h>
    #include <gtkmm/drawingarea.h>
    #include <cairomm/context.h>
     
     
     
     
    int main(int argc, char* argv[]) {
        Gtk::Main app(argc, argv);
     
        Gtk::Window fenetre;
        /**/
    //    Gtk::DrawingArea myArea;
    //Cairo::RefPtr<Cairo::Context> myContext = myArea.get_window()->create_cairo_context();
    //myContext->set_source_rgb(1.0, 0.0, 0.0);
    //myContext->set_line_width(2.0);
        /**/
     
        Gtk::Table tableau(1, 2); //Création d'un tableau de 1 case par 2 cases, dont les cases ne sont pas nécessairement de même grandeur.
        tableau.resize(3, 6); //Redimensionner le tableau (2 par 2).
        tableau.set_col_spacings(30);
        tableau.set_row_spacings(30);
        //tableau.set
        fenetre.add(tableau);
     
        Gtk::Label etiquette01("initiale");
        Gtk::Label etiquette02("minimale");
        Gtk::Label etiquette03("maximale");
        Gtk::Label etiquette04("finale");
        Gtk::Label etiquette05("temps 0-90%");
        Gtk::Label etiquette06("temps 25-75%");
        etiquette01.set_can_focus(false);
        etiquette02.set_can_focus(false);
        etiquette03.set_can_focus(false);
        etiquette04.set_can_focus(false);
        etiquette05.set_can_focus(false);
        etiquette06.set_can_focus(false);
        tableau.attach(etiquette01, 0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(etiquette02, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(etiquette03, 2, 3, 0, 1, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(etiquette04, 3, 4, 0, 1, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(etiquette05, 4, 5, 0, 1, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(etiquette06, 5, 6, 0, 1, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
     
        Gtk::Label etiquette11("92");
        Gtk::Label etiquette12("23");
        Gtk::Label etiquette13("105");
        Gtk::Label etiquette14("98");
        Gtk::Label etiquette15("5.5");
        Gtk::Label etiquette16("3.5");
        etiquette11.set_can_focus(false);
        etiquette12.set_can_focus(false);
        etiquette13.set_can_focus(false);
        etiquette14.set_can_focus(false);
        etiquette15.set_can_focus(false);
        etiquette16.set_can_focus(false);
        tableau.attach(etiquette11, 0, 1, 1, 2, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(etiquette12, 1, 2, 1, 2, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(etiquette13, 2, 3, 1, 2, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(etiquette14, 3, 4, 1, 2, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(etiquette15, 4, 5, 1, 2, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(etiquette16, 5, 6, 1, 2, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
     
        Gtk::Button boutonGraphique("graphique"); //Création d'un bouton.
        boutonGraphique.set_can_focus(false); //Empêcher le bouton d'avoir le focus.
        tableau.attach(boutonGraphique, 0, 1, 2, 3, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        //boutonClose.signal_clicked().connect(sigc::ptr_fun(&Gtk::Main::quit)); //Connexion du signal clicked() à la fonction Gtk::Main::quit() qui ferme le programme.
     
        Gtk::Button boutonClose(Gtk::Stock::QUIT); //Création d'un bouton.
        boutonClose.set_can_focus(false); //Empêcher le bouton d'avoir le focus.
        tableau.attach(boutonClose, 5, 6, 2, 3, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        boutonClose.signal_clicked().connect(sigc::ptr_fun(&Gtk::Main::quit)); //Connexion du signal clicked() à la fonction Gtk::Main::quit() qui ferme le programme.
     
     
        //tableau.attach(bouton2, 1, 2, 0, 1); //Le widget prend l'espace qui lui est alloué et tout autre espace additionnel.
        //tableau.attach(bouton3, 0, 2, 1, 2, Gtk::FILL, Gtk::FILL, 25, 10); //Le widget prend l'espace qui lui est alloué. Ajout d'espace (25px horizontal et 10px vertical) autour du widget.
     
        fenetre.show_all(); //L'habituel show_all() pour afficher tous les widgets.
     
        Gtk::Main::run(fenetre);
     
        return 0;
    }
    puis j'ai voulu séparer en 3 fichiers, pour développer l'appli dans les règles de l'art, et vous remarquer que je suis un "artiste" en herbe concernant le c++ ...
    fenetre.hpp:
    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
    #ifndef DEF_FENETRE
    #define DEF_FENETRE
     
    //#include <gtkmm/box.h>
    //#include <gtkmm/buttonbox.h>
    #include <gtkmm/button.h>
    //#include <gtkmm/image.h>
    #include <gtkmm/label.h>
    #include <gtkmm/main.h>
    //#include <gtkmm/notebook.h>
    #include <gtkmm/stock.h>
    #include <gtkmm/window.h>
    #include <gtkmm/table.h>
     
    class Fenetre : public Gtk::Window {
        public :
            Fenetre();
            void modifierTitre(Gtk::Widget* page, int numPage);
     
        private :
        Gtk::Label etiquette01;
        Gtk::Label etiquette02;
        Gtk::Label etiquette03;
        Gtk::Label etiquette04;
        Gtk::Label etiquette05;
        Gtk::Label etiquette06;
        Gtk::Label etiquette11;
        Gtk::Label etiquette12;
        Gtk::Label etiquette13;
        Gtk::Label etiquette14;
        Gtk::Label etiquette15;
        Gtk::Label etiquette16;
        Gtk::Button boutonGraphique;
        Gtk::Button boutonClose;
        Gtk::Table tableau;
     
    };
     
    #endif
    puis un main.cpp:
    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
    #include "Fenetre.hpp"
     
    #include <gtkmm/main.h>
    #include <gtkmm/table.h>
    #include <gtkmm/label.h>
    #include <gtkmm/window.h>
    //#include <gtkmm/curve.h>
    #include <gtkmm/button.h>
    #include <gtkmm/stock.h>
     
     
     
    int main(int argc, char* argv[]) {
        Gtk::Main app(argc, argv);
     
        Gtk::Window fenetre;
        Gtk::Main::run(fenetre);
     
        return 0;
    }
    et enfin un fenetre.cpp:
    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
    #include "Fenetre.hpp"
     
    Fenetre::Fenetre() : boutonClose(Gtk::Stock::QUIT),
                            boutonGraphique("Graphique"),
                            etiquette01("initiale"),
                            etiquette02("minimale"),
                            etiquette03("maximale"),
                            etiquette04("finale"),
                            etiquette05("temps 0-90%"),
                            etiquette06("temps 25-75%"),
                            etiquette11("92"),
                            etiquette12("23"),
                            etiquette13("105"),
                            etiquette14("98"),
                            etiquette15("5.5"),
                            etiquette16("3.5"),
                            tableau(6,3){
        add(tableau);
        //add(etiquette01);
        boutonGraphique.set_can_focus(false);
        //boiteBoutonsH.pack_start(boutonPrecedent);
     
        boutonClose.set_can_focus(false);
        //boiteBoutonsH.pack_start(boutonSuivant);
     
        //boiteV.pack_start(boiteBoutonsH);
        etiquette01.set_can_focus(false);
        etiquette02.set_can_focus(false);
        etiquette03.set_can_focus(false);
        etiquette04.set_can_focus(false);
        etiquette05.set_can_focus(false);
        etiquette06.set_can_focus(false);
        etiquette11.set_can_focus(false);
        etiquette12.set_can_focus(false);
        etiquette13.set_can_focus(false);
        etiquette14.set_can_focus(false);
        etiquette15.set_can_focus(false);
        etiquette16.set_can_focus(false);
     
        tableau.set_can_focus(false);
     
        tableau.attach(etiquette01, 0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(etiquette02, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(etiquette03, 2, 3, 0, 1, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(etiquette04, 3, 4, 0, 1, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(etiquette05, 4, 5, 0, 1, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(etiquette06, 5, 6, 0, 1, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
     
        tableau.attach(etiquette11, 0, 1, 1, 2, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(etiquette12, 1, 2, 1, 2, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(etiquette13, 2, 3, 1, 2, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(etiquette14, 3, 4, 1, 2, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(etiquette15, 4, 5, 1, 2, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(etiquette16, 5, 6, 1, 2, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
     
        tableau.attach(boutonGraphique, 0, 1, 2, 3, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
        tableau.attach(boutonClose, 5, 6, 2, 3, Gtk::SHRINK, Gtk::SHRINK); //Ajout d'un widget dans le tableau : ce widget sera de (0, 0) à (1, 1). Le widget prend le moins d'espace possible.
     
     
     
        show_all();
    }
     
    void Fenetre::modifierTitre(Gtk::Widget* page, int numPage) {
        //Modifier le titre de la fenêtre selon l'onglet choisi.
    //    set_title(barreOnglets.get_tab_label_text(*barreOnglets.get_nth_page(numPage)));
    }
    pas de problème de compil ni d'exécution, mais ma fenêtre s'affiche vide

    J'imagine que j'ai fait des erreurs en essayant d'améliorer la structure de mon code en plusieurs fichiers, mais je crois que c'est important pour y voir clair par la suite ...

    Quelqu'un a-t-il une idée pour me dépanner?

    Merci bien.

  2. #2
    Membre du Club Avatar de Persistant
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    septembre 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : septembre 2016
    Messages : 42
    Points : 60
    Points
    60

    Par défaut

    Bonjour,

    J'ai joué au jeux des différences d'après l'exemple HelloWorld
    J'ai trouvé que l'initialisation des widgets n'était pas dans l'ordre de déclaration(cf constructeur de Fenetre)
    J'ai trouvé que le destructeur n'était pas déclaré.

    PS: Même si mes remarque ne corrige pas ton problème, tu aurais pu simplifier ton exemple.

  3. #3
    Membre du Club Avatar de Persistant
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    septembre 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : septembre 2016
    Messages : 42
    Points : 60
    Points
    60

    Par défaut Et de trois

    Dernière petite différence erreur,

    au lieu de

Discussions similaires

  1. [Forms 9.0.4] Fenetre vide avec juste le menu?
    Par Aeternus dans le forum Forms
    Réponses: 7
    Dernier message: 22/06/2007, 15h11
  2. Mega débutant, fenetre vide (swing)
    Par gloubi dans le forum AWT/SWING
    Réponses: 5
    Dernier message: 03/08/2006, 23h59
  3. [BOA- Win XP] Fenetre Inspector vide
    Par PeterT dans le forum EDI/RAD
    Réponses: 1
    Dernier message: 18/06/2006, 23h39
  4. comment modifier les widgets dans une fenètre??
    Par afrikha dans le forum GTK+
    Réponses: 6
    Dernier message: 14/10/2005, 14h48
  5. LNK1201 en voulant afficher une fenetre vide
    Par 180degrés dans le forum MFC
    Réponses: 3
    Dernier message: 18/08/2005, 00h17

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