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 :

Menu et scrollbar


Sujet :

GTK+ avec C & C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Par d�faut Menu et scrollbar
    Bonjour � tous,
    je suis en train de d�velopper une application dans le cadre d'un projet, et je tombe sur un petit probl�me.

    Pour le moment, mon application est sommairement compos�e d'un menu, et d'une hbox, qui sont toutes les deux mises dans une vbox.
    Jusque l�, pas de probl�me, mais je veux maintenant pouvoir ajouter une scrollbar � mon hbox ... et l� j'ai un probl�me ...

    En fait, je n'arrive mettre la scrollbar qu'� la premi�re box qui contient les autres (la vbox), et donc lorsque je scrolle, le menu part avec ! Ce qui n'est pas pour me plaire bien s�r ...

    Voici le code que j'utilise pour le moment, et qui scrolle toute la page :

    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
     
    Application* newApplication()
    {
        // Déclaration des variables
        Application* app = NULL;
        GtkWidget* boxVerticale = NULL;
        GtkWidget* boxPrincipale = NULL;
        GtkWidget* scrollbar;
     
        app = (Application*) malloc(sizeof(Application));
        if(!app)
        {
            fprintf(stderr, "Erreur : Impossible d’allouer la mémoire pour l’application.");
            exit(EXIT_FAILURE);
        }
     
        app->m_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(app->m_window), "Projet C - Sujet 3");
        gtk_window_set_position(GTK_WINDOW(app->m_window), GTK_WIN_POS_CENTER);
        gtk_window_set_default_size(GTK_WINDOW(app->m_window), 800, 600);
        gtk_window_set_resizable (GTK_WINDOW(app->m_window), TRUE);
     
        app->m_projet = newProjet();
     
        scrollbar = gtk_scrolled_window_new(NULL, NULL);
        gtk_container_add(GTK_CONTAINER(app->m_window),scrollbar);
     
        // Box verticale
        boxVerticale = gtk_vbox_new(FALSE, 0);
        gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrollbar), boxVerticale);
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollbar), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
     
        // Création du menu
        app->m_menuBar = newMenuBar(app);
        gtk_box_pack_start(GTK_BOX(boxVerticale), app->m_menuBar->m_bar, FALSE, FALSE, 0);
     
        // Box principale
        boxPrincipale = gtk_hbox_new(FALSE, 0);
        gtk_container_add(GTK_CONTAINER(boxVerticale), boxPrincipale);
     
        // Affectation de la box où s’affiche le projet
        setProjetBox(app->m_projet, GTK_BOX(boxPrincipale));
     
        // Génération et actualisation du widget correspondant au projet
        generateProjetWidget(app->m_projet);
     
        // Connexion entre l’événement "quit" et la destruction de la fenêtre
        g_signal_connect(G_OBJECT(app->m_window), "destroy", G_CALLBACK(cb_quit), app);
     
        // Demande d’affichage
    	gtk_widget_show_all(app->m_window);
     
        return app;
    }
    Je vous remercie d'avance pour vos r�ponses

  2. #2
    Mod�rateur

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par d�faut
    Bonjour,

    en fait tu mets ta barre de menu dans ta box, et ta box dans ta scrolled window. Comme tout ce qui est dans la scrolled window bouge quand tu scrolles, la solution et d'avoir d'abord une box dans ta fen�tre principale. A l'int�rieur, tu ajoutes ton menu, et ta scrolled window. Et dans ta scrolled window, tu mets soit ton widget scrollable, soit ou une box qui contient les widgets scrollables.

    Tu peux aussi t'orienter vers glade, qui permet de construire graphiquement ses interfaces graphiques.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Par d�faut
    Merci beaucoup, j'ai r�ussi � faire ce que je voulais ... je pensais qu'on ne pouvait appliquer la fonction qu'� une fen�tre, mais non !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 0
    Dernier message: 01/06/2010, 14h33
  2. Supprimer les scrollbars et menu contextuel (CHtmlView)
    Par Acedia dans le forum VC++ .NET
    R�ponses: 0
    Dernier message: 09/01/2008, 14h20
  3. menu qui suit la scrollbar
    Par Mangacker dans le forum Mise en page CSS
    R�ponses: 1
    Dernier message: 22/05/2007, 07h51
  4. Menu dynamique et scrollbar
    Par tenderstoune dans le forum Mise en page CSS
    R�ponses: 8
    Dernier message: 06/04/2007, 11h14
  5. R�ponses: 1
    Dernier message: 04/08/2006, 17h31

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