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 :

scrollbar toujours en bas


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut scrollbar toujours en bas
    bonjour, voila je cherche a positionner ma scollbar (l'assenceur) toujours en bas
    pour cela je prend un exemple tout bete que voici
    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
     
    #include <stdlib.h>
    #include <gtk/gtk.h>
    int main(int argc, char* argv[]){
      GtkWidget* pWindow;
      GtkWidget* pBox;
      GtkWidget *pScrollbar;
      int i;
      gtk_init(&argc, &argv);
      pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
      gtk_window_set_default_size(GTK_WINDOW(pWindow), 320, 200);
      gtk_window_set_title(GTK_WINDOW(pWindow), "GtkScrolledWindow");
      g_signal_connect(G_OBJECT(pWindow),"destroy",G_CALLBACK(gtk_main_quit),0);
      pScrollbar = gtk_scrolled_window_new(NULL, NULL);
      gtk_container_add(GTK_CONTAINER(pWindow),pScrollbar);
      pBox=gtk_vbox_new(FALSE,5);
      gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(pScrollbar), pBox);
      gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(pScrollbar), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
      for(i = 1 ; i <= 10 ; ++i){
        GtkWidget *pLabel;
        char sTexte[10];
        g_sprintf(sTexte, "Label %d", i);
        pLabel = gtk_label_new(sTexte);
        gtk_box_pack_start(GTK_BOX(pBox), pLabel, FALSE, FALSE, 5);
      }
      gtk_widget_show_all(pWindow);
      gtk_main();
      return EXIT_SUCCESS;
    }
    les différentes informations que j'ai trouvés était pour moi incompréhensible, je suis débutant en gtk, c'est d'ailleurs pour ca que je vous donne ce code (tiré d'un tuto), je voudrai essayé de comprendre
    merci de votre aide

  2. #2
    Membre éprouvé Avatar de ccensam
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Par défaut Essayons de comprendre
    Alors, étant aussi débutant en GTK, je vais essayer commenté le 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
    #include <stdlib.h> 
    #include <gtk/gtk.h> //inclusion de la bibiothéque nécessaire à la compilation
     
    int main(int argc, char* argv[]){ 
    // décaration des widgets utiliser dans le programme
      GtkWidget* pWindow; 
      GtkWidget* pBox; 
      GtkWidget *pScrollbar; 
     
      int i;  
     
      gtk_init(&argc, &argv); // Sert a initier l'environnement pour fonctionner la GTK
     
      pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); // Créer une fenetre de HAUT NIVEAU et affecter son pointeur à pWindow
     
      gtk_window_set_default_size(GTK_WINDOW(pWindow), 320, 200); // Definir la taille de la fenétre
     
      gtk_window_set_title(GTK_WINDOW(pWindow), "GtkScrolledWindow"); // Definir le titre de la fenétre
     
      g_signal_connect(G_OBJECT(pWindow),"destroy",G_CALLBACK(gtk_main_quit),0); //  Singnal pour détruire la fenetre
     
      pScrollbar = gtk_scrolled_window_new(NULL, NULL); // Créer la Scroolbar
     
      gtk_container_add(GTK_CONTAINER(pWindow),pScrollbar); // Définir que pWindow contient le pScrollbar
     
      pBox=gtk_vbox_new(FALSE,5); // Créer un V_BOX pBox pour contenir le pLabel
     
      gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(pScrollbar), pBox); // "dit" au pScrollbar qu'il doit fonctionner en fonction de la taille de pBox
    pour cette fonction je peux rien dire pour le moment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(pScrollbar), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
    Et pour le reste du code je pense c'est clair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      for(i = 1 ; i <= 10 ; ++i){ 
        GtkWidget *pLabel; 
        char sTexte[10]; 
        g_sprintf(sTexte, "Label %d", i); 
        pLabel = gtk_label_new(sTexte); // Créer d'un Widget Label avec le texte sTexte
     
        gtk_box_pack_start(GTK_BOX(pBox), pLabel, FALSE, FALSE, 5); // Ajouter pLabel à pBox
      } 
      gtk_widget_show_all(pWindow); // Afficher toutes les widgets
      gtk_main(); 
      return EXIT_SUCCESS; 
    }

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut Re: Essayons de comprendre
    Citation Envoyé par ccensam
    pour cette fonction je peux rien dire pour le moment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(pScrollbar), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
    Cette fonction permet de définir l'affichage des barres de défilement. Je veut dire par exemple, les barres dans une zone de texte GtkTextView, si par exemple tu as les 2 arguments sur GTK_POLICY_ALWAYS, bin tes barres de défilements seront toujours visibles, même si aucun texte ne se trouve dans la zone ... !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  4. #4
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    merci de vos réponses, par contre je crois que je me suis mal expliqué
    enfet je code que j'ai mis, je le comprend parfaitement, c'est juste un exemple d'utilisation d'une scrollbar, et ce que je voudrai réussir a faire c'est par défault mettre cette scrollbar toujours vers le bas.
    merci de votre aide

  5. #5
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,
    Citation Envoyé par dams78
    ce que je voudrai réussir a faire c'est par défault mettre cette scrollbar toujours vers le bas.
    Textview

    et voilà ce que j'en ai fait pour arriver à la fin du texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    GtkTextIter iter;
    Gtkwidget *p_text_view = NULL;
    GtkTextBuffer *p_buffer = NULL;
    GtkTextMark *p_text_mark = NULL;
     
    p_text_view = gtk_text_view_new ();
    /* ... */
    p_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (p_text_view));
    gtk_text_buffer_get_end_iter (p_buffer, &iter);
    p_text_mark = gtk_text_buffer_create_mark (p_buffer, "cursor", &iter, FALSE);
    gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (p_text_view), p_text_mark, 0, FALSE, 0, 0);
    Ce n'est pas parfaitement au point (on arrive un peut au dessus de la ligne souhaitée), il faut surement jouer avec les options des deux dernières fonctions.

  6. #6
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    c'est bon j'ai réussit, merci de votre aide
    si yen a qui ca interresse contactez-moi pour la solution

  7. #7
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par dams78
    c'est bon j'ai réussit, merci de votre aide
    si yen a qui ca interresse contactez-moi pour la solution
    Humm tu sais, le partage c'est ce qui fait tout ... si tu as la soluce tu peut la poster directement ici
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  8. #8
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    ok, je vais essayer
    enfet j'ai résolu le probleme avec l'aide de mon collègue et on a pas trop compris comment on a réussit, mais le résultat y est
    alors je vais quand même essayer de vous "expliquer"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	insert =  gtk_text_buffer_get_insert(text);
    	gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(textview), insert, 0, FALSE, 1, 1);
    ca c'est le code qu'on a rajouté pour que ca marche
    sachant que text est notre text buffer et insert si j'ai bien compris est la ou le texte est inserré
    le probleme c'est que comme je suis en entreprise, naturellement je peux pas vous dévoiler tout mon code
    j'espere que le peu qu'il y a la est assez claire pour vous...

  9. #9
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par dams78
    alors je vais quand même essayer de vous "expliquer"
    Il y avait une explication dans ton dernier post?

    Ca aurait pu servir d'expliquer les arguments...

    Les curieux peuvent trouver les explications ici:

    http://developer.gnome.org/doc/API/2...scroll-to-mark

    Ce que je trouve bizarre, c'est que dans ton exemple de départ, tu n'as pas d'élément GtkTextView...

    Jc

  10. #10
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    j'avais déja posté hier un exemple ou j'utilisait un gtktextview
    mais il est rester sans réponses donc j'ai essayer de faire un truc plus simple aujourd'hui
    mais entre temps avec de l'aide j'ai réussit à faire ce que je voulais
    donc voila le pourquoi du comment

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

Discussions similaires

  1. Scrollbar verticale d'un contrôle toujours en bas
    Par clem67 dans le forum VB.NET
    Réponses: 5
    Dernier message: 28/01/2011, 22h33
  2. Mettre une scrollbar toujours en bas
    Par sisi95 dans le forum GTK+
    Réponses: 2
    Dernier message: 19/05/2009, 12h56
  3. scrollbar du div toujours en bas
    Par narcis60floyjo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/05/2009, 11h35
  4. scrollbar toujours en bas
    Par arnaudperfect dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 10/07/2008, 11h43
  5. Positionner le scroll d'un div toujours en bas.
    Par barok dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/08/2005, 12h17

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