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+ Discussion :

gtkmm : DrawingArea dans une ScrolledWindow


Sujet :

GTK+

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Avril 2010
    Messages : 85
    Points : 61
    Points
    61
    Par défaut gtkmm : DrawingArea dans une ScrolledWindow
    Bonjour,

    Voici ce que je chreche a faire:
    dans ma fenetre principale, je souhaiterais mettre une DrawingArea dans une ScrolledWindow de maniere a ce que :

    - la ScrolledWindow a une taille minimum. (< taille de la drawingArea);
    - lorsque l'on augmente la taille de la fenetre principale, la ScrolledWindow augmente jusque la drawingArea soit entierement visible. Au dela, sa taille est bloquée (on compense par du padding).

    Je tourne depuis un moment avec les Box et les alignment, mais ça ne marche pas... soit la ScrolledWindow est trop "elastique" soit elle reste bloquée à la taille initiale...

  2. #2
    Membre confirmé
    Profil pro
    Retraité
    Inscrit en
    Novembre 2009
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2009
    Messages : 329
    Points : 606
    Points
    606
    Par défaut
    Je ne pratique pas le C++, donc l'exemple dont je dispose est en C, mais il doit pouvoir s'adapter facilement à ton cas.
    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
     
    #include <math.h>
    #include <gtk/gtk.h>
    #include <gdk/gdk.h>
     
    /*  Essai de   scrolled window  */
     
    gboolean expose_event_callback (GtkWidget *widget, GdkEventExpose *event, gpointer data)
    {
      gdk_draw_arc (widget->window,
                    widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
                    TRUE,
                    50, 0, widget->allocation.height, widget->allocation.height,
                    0, 64 * 360);
     
      gdk_draw_line (widget->window ,widget->style->white_gc  ,50 ,50 ,1150, 250);
      return TRUE;
    }
     
    int main( int   argc ,char *argv[] )
    {
      GtkWidget *gg_main_window ,*gg_main_vbox ,*scrol ,*gg_canvas;
     
      gtk_init (&argc, &argv);
      gg_main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);  
      gtk_widget_set_size_request (gg_main_window, 500, 500);
     
      /* vbox principale */
      gg_main_vbox = gtk_vbox_new (FALSE, 1);
      gtk_box_set_homogeneous (GTK_BOX(gg_main_vbox) , FALSE);
      gtk_container_add (GTK_CONTAINER (gg_main_window), gg_main_vbox);
      scrol = gtk_scrolled_window_new (NULL ,NULL);
      gtk_box_pack_start (GTK_BOX (gg_main_vbox) ,scrol , TRUE, TRUE, 0);
     
      gg_canvas = gtk_drawing_area_new ();  
      gtk_widget_set_size_request (gg_canvas ,700 ,600);
     
      /* Rajoute la drawing_area a la scrolled_window */
      gtk_scrolled_window_add_with_viewport  (GTK_SCROLLED_WINDOW(scrol),gg_canvas );
       g_signal_connect (G_OBJECT (gg_canvas), "expose_event",  
                        G_CALLBACK (expose_event_callback), NULL);
     
      g_signal_connect (G_OBJECT (gg_main_window), "delete_event"
    		    ,G_CALLBACK (gtk_main_quit), NULL);
     
      gtk_widget_show_all (gg_main_window);
      gtk_main ();
      return 0;
    }
    GraceGTK: a plotting tool at https://sourceforge.net/projects/gracegtk

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Avril 2010
    Messages : 85
    Points : 61
    Points
    61
    Par défaut
    Salut,

    J'ai fait quelquechose qui ressemble avec scrollWindow. Ca marche bien, hormis le fait que la drawing area est extensible a l'infini. J'aurais préféré que la taille de la fenetre se bloque lorsque la drawing area est entierement visible.

    le code:

    gui.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
    class Fenetre : public Gtk::Window {
        private:
     
            Gtk::ScrolledWindow compoSW;
     
            //dessin
            Gtk::ScrolledWindow plaqueSW;
            Gtk::Viewport plaqueVP;
            Gtk::DrawingArea plaque;
     
            void on_cablage_toggled();
        public:
            Fenetre();
            ~Fenetre();
     
    };
    gui.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
     
    Fenetre::Fenetre() :
         plaqueVP(*(plaqueSW.get_hadjustment()),*(plaqueSW.get_vadjustment()))
    {
     
        plaqueVP.add(plaque); //plaque decrit ailleurs
     
        plaqueSW.set_size_request(220,200); //la taille minimum
        plaqueSW.add(plaqueVP);
        plaqueSW.set_policy(Gtk::POLICY_AUTOMATIC,Gtk::POLICY_AUTOMATIC);
     
     
        add(plaqueSW);
     
        show_all();
    }
    Fenetre::~Fenetre(){/***/}

Discussions similaires

  1. [gtkmm] Affichage de widgets dans une Gtk::Window
    Par Xavi91 dans le forum GTK+ avec C & C++
    Réponses: 13
    Dernier message: 31/01/2011, 17h43
  2. [Gtkmm] DrawingArea dans une autre DrawingArea
    Par supers03 dans le forum GTK+
    Réponses: 9
    Dernier message: 28/02/2008, 10h17
  3. [Gtkmm] Colorer une ScrolledWindow
    Par Anium dans le forum GTK+
    Réponses: 0
    Dernier message: 12/01/2008, 17h28
  4. Clic dans uen drawingArea située dans une scrolledWindow
    Par phyn04 dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 05/01/2008, 23h11
  5. [gtkmm] Zone cliquable dans une fenetre?
    Par Valkirion dans le forum GTK+
    Réponses: 9
    Dernier message: 13/04/2007, 03h43

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