Les fenêtres avec barres de défilement

  1. Introduction
  2. Création d’une barre défilement

1. Introduction

Sur ce tutoriel de langage C (librairie GTK+), nous allons voir comment créer une fenêtre avec des barres de défilement.
Pour mettre en place des barres de défilement, on utilise le widget GtkScrolledWindow. Ce dernier est un héritier direct de GtkBin.

2. Création d’une barre défilement

On va commencer par créer un pointeur vers GtkWidget. Dans notre cas, ça sera :

Puis par la suite, on passe à l’initialisation. La syntaxe est :
GtkWidget* gtk_scrolled_window_new(GtkAdjustment *hadjustment, GtkAdjustment *vadjustment);
Les paramètres hadjustment et vadjustment définissent les propriétés des barres de défilement horizontale et verticale. Pour nous, on va laisser ces paramètres à NULL pour que GTK puisse générer automatiquement deux GtkAdjustment par défaut.
Dans notre cas, l’initialisation sera ainsi:

GtkScrolledWindow comprend une barre de défilement horizontale et une barre de défilement verticale. Cependant on peut décider la barre qu’on veut afficher et celle qu’on ne veut pas. Dans ce cas, on utilise gtk_scrolled_window_set_policy (). Synatxe :
void gtk_scrolled_window_set_policy (GtkScrolledWindow *scrolled_window, GtkPolicyType hscroll_policy, GtkPolicyType vscroll_policy);
Les valeurs que peuvent prendre hscroll_policy et vscroll_policy sont:

  • GTK_POLICY_ALWAYS : si on veut que la barre de défilement soit toujours affichée.
  • GTK_POLICY_AUTOMATIC : si on veut que la barre de défilement soit affichée s’il est nécessaire.
  • GTK_POLICY_NEVER : si on veut que la barre de défilement ne soit jamais affichée.

Pour ajouter un composant GtkScrolledWindow, on va voir d’abord si l'élément lui-même a les capacités d’avoir ses propres barres de défilement ou pas. Si c’est le cas (exemple cas de GtkTextView), on peut utiliser gtk_container_add (). Dans le cas contraire, on utilisera gtk_scrolled_window_add_with_viewport ().
Synatxe :
void gtk_scrolled_window_add_with_viewport(GtkScrolledWindow *scrolled_window, GtkWidget *child);
Dans notre cas, ça sera:

Exemple

Voici une capture de ce que nous allons faire:
, cours langage C, GTK+,  GtkScrolledWindow
Code C :



Une question? Cliquez ici pour la poser.

Retour sur le portail du langage C/C++