Créer une interface graphique en C avec GTK : Guide complet

Dans le développement logiciel, créer une interface utilisateur graphique (GUI) en C peut sembler complexe, mais avec GTK, ce processus devient beaucoup plus accessible. GTK, ou GIMP Toolkit, est une bibliothèque multiplateforme et open source conçue pour simplifier la création d’interfaces graphiques modernes et attrayantes.

Cette bibliothèque est particulièrement adaptée aux développeurs cherchant une solution puissante et flexible pour leurs projets C. Avec son riche ensemble de widgets, ses capacités avancées pour la gestion des événements et ses outils pour personnaliser l’apparence, GTK s’impose comme un choix incontournable.

Dans cet article, nous allons explorer en détail comment utiliser GTK pour développer une interface graphique en C, en partant des bases jusqu’à des fonctionnalités plus avancées. Vous apprendrez à installer la bibliothèque, à structurer votre première application, et à tirer parti des nombreux widgets disponibles pour construire des interfaces fonctionnelles et élégantes. Préparez-vous à transformer vos projets C en applications visuellement engageantes !

Sommaire

Installation de GTK et configuration de l’environnement


Pour commencer à développer des interfaces graphiques avec GTK en C, il est essentiel de configurer correctement votre environnement de développement. Cette section vous guidera à travers les étapes d’installation de GTK sur différents systèmes d’exploitation et la configuration de votre compilateur pour utiliser la bibliothèque.

Installation sur Linux


Sur la plupart des distributions Linux, GTK est disponible via les gestionnaires de paquets. Vous pouvez l’installer en utilisant les commandes suivantes :

Pour les systèmes basés sur Debian :

sudo apt update
sudo apt install libgtk-3-dev

Pour Fedora :

sudo dnf install gtk3-devel

Pour Arch Linux :

sudo pacman -S gtk3

Installation sur Windows

  1. Téléchargez le kit d’installation de GTK pour Windows depuis MSYS2.
  2. Installez MSYS2 et ouvrez le terminal.
  3. Mettez à jour les paquets :
pacman -Syu
  1. Installez GTK avec :
pacman -S mingw-w64-x86_64-gtk3

Installation sur macOS


Pour macOS, Homebrew est la méthode recommandée pour installer GTK :

brew install gtk+3

Configuration de l’environnement


Une fois GTK installé, configurez votre environnement pour compiler et exécuter des programmes utilisant cette bibliothèque.

  1. Inclure les bibliothèques GTK dans votre compilateur GCC
    Utilisez la commande pkg-config pour inclure automatiquement les chemins d’accès et les bibliothèques nécessaires :
gcc -o mon_programme mon_programme.c $(pkg-config --cflags --libs gtk+-3.0)
  1. Éditeurs et IDE recommandés
  • Visual Studio Code : Installez l’extension pour C/C++ et configurez les paramètres pour inclure GTK.
  • Code::Blocks ou CLion : Assurez-vous de pointer les chemins d’inclusion vers les fichiers GTK.

Test de l’installation


Créez un fichier hello.c avec le code suivant pour vérifier si GTK est correctement installé :

#include <gtk/gtk.h>

int main(int argc, char *argv[]) {
    gtk_init(&argc, &argv);

    GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "Bonjour GTK");
    gtk_window_set_default_size(GTK_WINDOW(window), 400, 200);

    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

    gtk_widget_show_all(window);
    gtk_main();

    return 0;
}

Compilez le fichier avec la commande mentionnée plus haut, puis exécutez-le. Si une fenêtre s’affiche, votre installation est terminée avec succès.

Avec cet environnement configuré, vous êtes prêt à explorer les fonctionnalités de GTK et à développer des interfaces graphiques en C.

Structure de base d’une application GTK


Pour comprendre comment développer une interface graphique avec GTK, il est essentiel de maîtriser la structure de base d’une application GTK. Cette section décrit les étapes fondamentales pour initialiser une application, créer une fenêtre et gérer les événements utilisateurs.

Structure d’une application GTK


Une application GTK typique suit une structure bien définie :

  1. Initialisation de GTK
    Avant d’utiliser GTK, l’application doit initialiser la bibliothèque avec la fonction gtk_init().
  2. Création de la fenêtre principale
    Une fenêtre est créée à l’aide de gtk_window_new(), qui définit le conteneur principal de l’application.
  3. Gestion des événements
    Les signaux, comme le clic sur un bouton ou la fermeture de la fenêtre, sont capturés grâce à g_signal_connect().
  4. Lancement de la boucle principale
    La fonction gtk_main() démarre la boucle d’événements, permettant à l’application de rester active jusqu’à ce qu’elle soit fermée.

Exemple d’une application de base


Voici un exemple simple d’application GTK :

#include <gtk/gtk.h>

int main(int argc, char *argv[]) {
    // Initialisation de GTK
    gtk_init(&argc, &argv);

    // Création de la fenêtre principale
    GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "Application GTK de base");
    gtk_window_set_default_size(GTK_WINDOW(window), 400, 300);

    // Gestion de l'événement de fermeture
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

    // Affichage de la fenêtre
    gtk_widget_show_all(window);

    // Lancement de la boucle principale
    gtk_main();

    return 0;
}

Explication du code

1. Initialisation de GTK


La fonction gtk_init(&argc, &argv) initialise GTK et traite les arguments de la ligne de commande spécifiques à la bibliothèque.

2. Création de la fenêtre

  • gtk_window_new(GTK_WINDOW_TOPLEVEL) : Crée une fenêtre principale qui peut être fermée par l’utilisateur.
  • gtk_window_set_title() : Définit le titre de la fenêtre.
  • gtk_window_set_default_size() : Spécifie la taille par défaut de la fenêtre.

3. Gestion des événements

  • g_signal_connect() : Connecte le signal destroy (émis lors de la fermeture de la fenêtre) à la fonction gtk_main_quit(), qui termine la boucle principale.

4. Affichage et boucle principale

  • gtk_widget_show_all() : Affiche tous les widgets contenus dans la fenêtre.
  • gtk_main() : Démarre la boucle d’événements et maintient l’application en exécution.

Résumé de la structure


Une application GTK suit toujours ce flux :

  1. Initialiser GTK.
  2. Créer la fenêtre principale et les widgets nécessaires.
  3. Connecter les signaux pour gérer les événements utilisateur.
  4. Lancer la boucle principale.

Avec cette structure, vous avez une base solide pour développer des interfaces graphiques sophistiquées avec GTK en C.

Création d’une fenêtre et gestion des signaux


Une interface graphique efficace repose sur la création d’une fenêtre principale et la gestion des événements utilisateur. Cette section explique comment créer une fenêtre avec GTK et connecter des signaux pour interagir avec l’utilisateur.

Création de la fenêtre


La fenêtre principale est le conteneur de base dans une application GTK. Voici comment la créer :

Code exemple :

#include <gtk/gtk.h>

int main(int argc, char *argv[]) {
    // Initialisation de GTK
    gtk_init(&argc, &argv);

    // Création de la fenêtre principale
    GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "Fenêtre GTK");
    gtk_window_set_default_size(GTK_WINDOW(window), 800, 600);

    // Gestion de l'événement de fermeture
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

    // Affichage de la fenêtre
    gtk_widget_show_all(window);

    // Lancement de la boucle principale
    gtk_main();

    return 0;
}

Explication du code :

  1. gtk_window_new(GTK_WINDOW_TOPLEVEL) : Crée une fenêtre de niveau supérieur, qui peut contenir d’autres widgets.
  2. gtk_window_set_title() : Définit le titre visible de la fenêtre.
  3. gtk_window_set_default_size() : Spécifie la taille initiale de la fenêtre (en pixels).
  4. g_signal_connect() : Connecte un événement, ici la fermeture de la fenêtre, à une fonction spécifique (gtk_main_quit pour quitter l’application).

Gestion des signaux


Les signaux sont des notifications envoyées par GTK lorsqu’un événement se produit, comme un clic sur un bouton ou la fermeture d’une fenêtre.

Connexion des signaux

La fonction g_signal_connect() est utilisée pour connecter un signal à une fonction de rappel (callback) :

Syntaxe :

g_signal_connect(instance, "signal-name", G_CALLBACK(callback_function), user_data);

Exemple :

g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
  • instance : L’objet émetteur du signal (par ex. une fenêtre ou un bouton).
  • signal-name : Le nom du signal (par ex. « destroy » pour la fermeture de la fenêtre).
  • G_CALLBACK(callback_function) : La fonction appelée en réponse au signal.
  • user_data : Données supplémentaires transmises à la fonction (optionnel).

Gestion des clics sur un bouton


Voici un exemple pour gérer un clic sur un bouton dans une fenêtre :

Code exemple :

#include <gtk/gtk.h>

// Fonction de rappel
void on_button_clicked(GtkWidget *button, gpointer user_data) {
    g_print("Bouton cliqué&nbsp;!\n");
}

int main(int argc, char *argv[]) {
    gtk_init(&argc, &argv);

    GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "Gestion des Signaux");
    gtk_window_set_default_size(GTK_WINDOW(window), 400, 300);

    GtkWidget *button = gtk_button_new_with_label("Cliquez-moi");
    gtk_container_add(GTK_CONTAINER(window), button);

    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
    g_signal_connect(button, "clicked", G_CALLBACK(on_button_clicked), NULL);

    gtk_widget_show_all(window);
    gtk_main();

    return 0;
}

Explication du code :

  1. gtk_button_new_with_label() : Crée un bouton avec un texte.
  2. gtk_container_add() : Ajoute le bouton au conteneur de la fenêtre.
  3. on_button_clicked() : Fonction de rappel appelée lorsque le bouton est cliqué. Ici, elle affiche un message dans la console avec g_print().

Signaux courants


Voici quelques signaux fréquemment utilisés :

WidgetSignalDescription
Fenêtre"destroy"Émis lorsque la fenêtre est fermée.
Bouton"clicked"Émis lorsqu’un bouton est cliqué.
Entrée"changed"Émis lorsque le texte d’une entrée change.
Slider"value-changed"Émis lorsque la valeur d’un slider change.

Résumé

  1. La création d’une fenêtre se fait via gtk_window_new.
  2. Les signaux permettent de capturer et de gérer les événements utilisateur.
  3. La fonction g_signal_connect() est le moyen principal de connecter les signaux aux fonctions de rappel.

Avec une gestion efficace des fenêtres et des signaux, vous êtes prêt à enrichir vos interfaces graphiques avec des fonctionnalités interactives.

Utilisation des widgets GTK


Les widgets sont les composants de base des interfaces graphiques dans GTK. Ils incluent des éléments interactifs comme les boutons, les labels, les entrées de texte, et bien d’autres. Cette section explore les widgets GTK les plus couramment utilisés et fournit des exemples pratiques pour leur implémentation.

Boutons


Les boutons sont parmi les widgets les plus simples et les plus utiles. Ils permettent de capturer les interactions de l’utilisateur.

Exemple : Créer un bouton avec une étiquette et gérer son clic

#include <gtk/gtk.h>

void on_button_clicked(GtkWidget *button, gpointer data) {
    g_print("Bouton cliqué&nbsp;!\n");
}

int main(int argc, char *argv[]) {
    gtk_init(&argc, &argv);

    GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "Bouton GTK");
    gtk_window_set_default_size(GTK_WINDOW(window), 300, 200);

    GtkWidget *button = gtk_button_new_with_label("Cliquez-moi");
    g_signal_connect(button, "clicked", G_CALLBACK(on_button_clicked), NULL);

    gtk_container_add(GTK_CONTAINER(window), button);
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

    gtk_widget_show_all(window);
    gtk_main();

    return 0;
}

Labels


Les labels sont utilisés pour afficher du texte statique dans l’interface.

Exemple : Ajouter un label à une fenêtre

GtkWidget *label = gtk_label_new("Bienvenue sur GTK !");
gtk_container_add(GTK_CONTAINER(window), label);

Propriétés du label

  • gtk_label_set_text() : Modifie le texte affiché par le label.
  • gtk_label_set_justify() : Définit l’alignement du texte (à gauche, centré, ou à droite).

Entrées de texte


Les entrées de texte permettent à l’utilisateur de saisir des données.

Exemple : Créer une entrée de texte

GtkWidget *entry = gtk_entry_new();
gtk_container_add(GTK_CONTAINER(window), entry);

Signaux associés aux entrées

  • "changed" : Émis lorsque le texte de l’entrée change.
  • "activate" : Émis lorsque l’utilisateur appuie sur « Entrée ».

Exemple : Capturer le texte saisi dans une entrée

void on_entry_activate(GtkWidget *entry, gpointer data) {
    const char *text = gtk_entry_get_text(GTK_ENTRY(entry));
    g_print("Texte saisi : %s\n", text);
}

Checkboxes et Radio Buttons


Ces widgets permettent de sélectionner ou désélectionner des options.

Exemple : Créer une checkbox

GtkWidget *checkbox = gtk_check_button_new_with_label("Option 1");
gtk_container_add(GTK_CONTAINER(window), checkbox);

Exemple : Créer un groupe de radio buttons

GtkWidget *radio1 = gtk_radio_button_new_with_label(NULL, "Option A");
GtkWidget *radio2 = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(radio1), "Option B");
gtk_container_add(GTK_CONTAINER(window), radio1);
gtk_container_add(GTK_CONTAINER(window), radio2);

Listes déroulantes (ComboBox)


Les listes déroulantes permettent à l’utilisateur de choisir une option parmi plusieurs.

Exemple : Créer une ComboBox

GtkWidget *combobox = gtk_combo_box_text_new();
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(combobox), NULL, "Option 1");
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(combobox), NULL, "Option 2");
gtk_container_add(GTK_CONTAINER(window), combobox);

Affichage d’images


Pour intégrer des images dans une interface graphique, utilisez le widget GtkImage.

Exemple : Afficher une image

GtkWidget *image = gtk_image_new_from_file("chemin/vers/image.png");
gtk_container_add(GTK_CONTAINER(window), image);

Résumé des widgets courants

WidgetDescriptionFonction principale
BoutonCapture les clics de l’utilisateurgtk_button_new_with_label()
LabelAffiche du texte statiquegtk_label_new()
EntréePermet la saisie de textegtk_entry_new()
CheckboxPermet de cocher ou décocher une optiongtk_check_button_new_with_label()
Radio ButtonSélectionner une option parmi plusieursgtk_radio_button_new_with_label()
ComboBoxFournit une liste déroulante d’optionsgtk_combo_box_text_new()
ImageAffiche une imagegtk_image_new_from_file()

Conclusion


Les widgets GTK offrent une grande variété d’éléments interactifs pour construire des interfaces graphiques attrayantes et fonctionnelles. Avec ces outils de base, vous êtes prêt à concevoir des interfaces utilisateurs sophistiquées et à ajouter de l’interactivité à vos applications.

Disposition des éléments avec les containers


Les containers sont essentiels pour organiser les widgets dans une interface graphique GTK. Ils permettent de structurer l’apparence et le comportement des éléments en fonction de la disposition souhaitée. Cette section présente les containers GTK les plus courants et leur utilisation pratique.

Les types de containers en GTK


GTK propose plusieurs containers pour organiser les widgets :

ContainerDescription
GtkBoxOrganise les widgets en ligne ou en colonne.
GtkGridDispose les widgets sous forme de grille.
GtkFixedPositionne les widgets à des coordonnées fixes.
GtkStackPermet de basculer entre plusieurs widgets.

Utilisation de GtkBox


GtkBox est utilisé pour organiser les widgets horizontalement ou verticalement.

Exemple : Organisation en colonne avec GtkBox

GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
gtk_container_add(GTK_CONTAINER(window), box);

GtkWidget *button1 = gtk_button_new_with_label("Bouton 1");
GtkWidget *button2 = gtk_button_new_with_label("Bouton 2");
GtkWidget *button3 = gtk_button_new_with_label("Bouton 3");

gtk_box_pack_start(GTK_BOX(box), button1, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(box), button2, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(box), button3, TRUE, TRUE, 0);

Explications :

  • GtkOrientation : Définit l’orientation (verticale ou horizontale).
  • gtk_box_pack_start() : Ajoute des widgets dans la boîte.

Utilisation de GtkGrid


GtkGrid organise les widgets sous forme de tableau, avec des lignes et des colonnes.

Exemple : Disposition en grille avec GtkGrid

GtkWidget *grid = gtk_grid_new();
gtk_container_add(GTK_CONTAINER(window), grid);

GtkWidget *button1 = gtk_button_new_with_label("1,1");
GtkWidget *button2 = gtk_button_new_with_label("1,2");
GtkWidget *button3 = gtk_button_new_with_label("2,1");
GtkWidget *button4 = gtk_button_new_with_label("2,2");

gtk_grid_attach(GTK_GRID(grid), button1, 0, 0, 1, 1);
gtk_grid_attach(GTK_GRID(grid), button2, 1, 0, 1, 1);
gtk_grid_attach(GTK_GRID(grid), button3, 0, 1, 1, 1);
gtk_grid_attach(GTK_GRID(grid), button4, 1, 1, 1, 1);

Explications :

  • gtk_grid_attach() : Place un widget à une position spécifique dans la grille.
  • Les arguments définissent la colonne, la ligne, la largeur, et la hauteur.

Utilisation de GtkFixed


GtkFixed permet de positionner les widgets à des coordonnées précises.

Exemple : Disposition fixe avec GtkFixed

GtkWidget *fixed = gtk_fixed_new();
gtk_container_add(GTK_CONTAINER(window), fixed);

GtkWidget *button1 = gtk_button_new_with_label("Bouton 1");
GtkWidget *button2 = gtk_button_new_with_label("Bouton 2");

gtk_fixed_put(GTK_FIXED(fixed), button1, 50, 50);
gtk_fixed_put(GTK_FIXED(fixed), button2, 150, 100);

Explications :

  • gtk_fixed_put() : Place un widget aux coordonnées (x, y).

Utilisation de GtkStack


GtkStack permet de créer une pile de widgets et d’afficher un seul widget à la fois.

Exemple : Utilisation de GtkStack

GtkWidget *stack = gtk_stack_new();
gtk_container_add(GTK_CONTAINER(window), stack);

GtkWidget *label1 = gtk_label_new("Page 1");
GtkWidget *label2 = gtk_label_new("Page 2");

gtk_stack_add_titled(GTK_STACK(stack), label1, "page1", "Première page");
gtk_stack_add_titled(GTK_STACK(stack), label2, "page2", "Deuxième page");

gtk_stack_set_visible_child_name(GTK_STACK(stack), "page1");

Explications :

  • gtk_stack_add_titled() : Ajoute un widget avec un titre.
  • gtk_stack_set_visible_child_name() : Définit le widget visible.

Comparaison des containers

ContainerUtilisation principaleFlexibilité
GtkBoxOrganisation simple en ligne/colonneModéré
GtkGridDisposition en grilleÉlevée
GtkFixedPositionnement précisFaible (rigide)
GtkStackBasculer entre widgetsModéré

Conclusion


Les containers sont des outils puissants pour organiser et structurer vos interfaces graphiques en GTK. En combinant différents types de containers comme GtkBox pour des dispositions linéaires, GtkGrid pour des grilles, et GtkStack pour des widgets dynamiques, vous pouvez concevoir des interfaces claires et intuitives. Cela vous permettra de mieux répondre aux besoins des utilisateurs tout en rendant vos applications visuellement attrayantes et fonctionnelles.

Ajout de fonctionnalités interactives


Pour rendre une interface graphique intuitive et utile, il est essentiel d’ajouter des fonctionnalités interactives. Cette section explore comment intégrer des éléments comme des menus, des boîtes de dialogue et des interactions dynamiques dans une application GTK.

Création de menus


Les menus permettent aux utilisateurs de naviguer facilement dans l’application ou d’accéder à des fonctionnalités spécifiques.

Exemple : Création d’un menu simple

GtkWidget *menu_bar = gtk_menu_bar_new();
GtkWidget *file_menu = gtk_menu_new();
GtkWidget *file_item = gtk_menu_item_new_with_label("Fichier");
GtkWidget *quit_item = gtk_menu_item_new_with_label("Quitter");

// Structure des menus
gtk_menu_item_set_submenu(GTK_MENU_ITEM(file_item), file_menu);
gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), quit_item);
gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), file_item);

// Gestion des clics
g_signal_connect(quit_item, "activate", G_CALLBACK(gtk_main_quit), NULL);

// Ajout à la fenêtre
gtk_box_pack_start(GTK_BOX(box), menu_bar, FALSE, FALSE, 0);

Explications :

  • gtk_menu_bar_new() : Crée une barre de menus.
  • gtk_menu_new() : Crée un menu déroulant.
  • gtk_menu_item_set_submenu() : Associe un sous-menu à un élément de menu.
  • g_signal_connect() : Gère l’événement de sélection dans le menu.

Ajout de boîtes de dialogue


Les boîtes de dialogue sont utilisées pour afficher des informations ou demander une confirmation à l’utilisateur.

Exemple : Boîte de dialogue simple

void show_message_dialog(GtkWidget *parent) {
    GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(parent),
                                               GTK_DIALOG_MODAL,
                                               GTK_MESSAGE_INFO,
                                               GTK_BUTTONS_OK,
                                               "Message d'information");
    gtk_dialog_run(GTK_DIALOG(dialog));
    gtk_widget_destroy(dialog);
}

// Appel de la boîte de dialogue
g_signal_connect(button, "clicked", G_CALLBACK(show_message_dialog), window);

Explications :

  • gtk_message_dialog_new() : Crée une boîte de dialogue avec un message.
  • gtk_dialog_run() : Affiche la boîte de dialogue et attend une réponse.
  • gtk_widget_destroy() : Ferme la boîte de dialogue après son utilisation.

Interaction avec des widgets dynamiques


Ajouter de l’interactivité aux widgets rend l’application plus engageante.

Exemple : Mise à jour d’un label en fonction de l’entrée de texte

void on_entry_changed(GtkWidget *entry, gpointer label) {
    const char *text = gtk_entry_get_text(GTK_ENTRY(entry));
    gtk_label_set_text(GTK_LABEL(label), text);
}

int main(int argc, char *argv[]) {
    gtk_init(&argc, &argv);

    GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "Interaction dynamique");
    gtk_window_set_default_size(GTK_WINDOW(window), 400, 200);

    GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
    gtk_container_add(GTK_CONTAINER(window), box);

    GtkWidget *entry = gtk_entry_new();
    GtkWidget *label = gtk_label_new("Texte saisi apparaîtra ici");

    gtk_box_pack_start(GTK_BOX(box), entry, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0);

    g_signal_connect(entry, "changed", G_CALLBACK(on_entry_changed), label);
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

    gtk_widget_show_all(window);
    gtk_main();

    return 0;
}

Explications :

  • gtk_entry_get_text() : Récupère le texte de l’entrée.
  • gtk_label_set_text() : Met à jour le texte affiché dans le label.

Ajout de raccourcis clavier


Les raccourcis clavier permettent un accès rapide aux fonctionnalités.

Exemple : Ajouter un raccourci clavier pour quitter

GtkAccelGroup *accel_group = gtk_accel_group_new();
gtk_window_add_accel_group(GTK_WINDOW(window), accel_group);

GtkWidget *quit_item = gtk_menu_item_new_with_label("Quitter");
gtk_widget_add_accelerator(quit_item, "activate", accel_group,
                           GDK_KEY_q, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);

g_signal_connect(quit_item, "activate", G_CALLBACK(gtk_main_quit), NULL);

Explications :

  • gtk_accel_group_new() : Crée un groupe de raccourcis.
  • gtk_widget_add_accelerator() : Associe un raccourci clavier à une action.

Résumé

FonctionnalitéWidget ou MéthodeExemple d’utilisation
MenusGtkMenuBar, GtkMenuAjout de menus déroulants.
Boîtes de dialoguegtk_message_dialog_new()Affichage d’informations ou de confirmations.
Widgets dynamiquesgtk_entry, gtk_labelSynchronisation du texte de l’entrée et du label.
Raccourcis clavierGtkAccelGroupAssocier des actions aux touches.

Conclusion


En ajoutant des fonctionnalités interactives comme des menus, des boîtes de dialogue, et des widgets dynamiques, vous pouvez transformer une application de base en une interface utilisateur riche et engageante. Ces éléments permettent de fournir une meilleure expérience utilisateur et d’accroître la fonctionnalité globale de vos projets GTK.

Conclusion


Dans cet article, nous avons exploré les fondamentaux du développement d’interfaces graphiques en C avec GTK. Nous avons commencé par l’installation et la configuration de l’environnement de développement, avant d’aborder la structure de base d’une application GTK et la gestion des fenêtres et des signaux. Nous avons ensuite étudié l’utilisation des widgets, la disposition des éléments avec les containers, et l’ajout de fonctionnalités interactives comme des menus, des boîtes de dialogue et des raccourcis clavier.

Avec GTK, vous disposez d’une bibliothèque puissante et flexible pour concevoir des interfaces graphiques modernes et dynamiques. Grâce aux concepts et aux exemples pratiques présentés, vous êtes maintenant prêt à développer des applications enrichies, adaptées aux besoins de vos utilisateurs. Continuez à expérimenter avec GTK pour maîtriser ses fonctionnalités avancées et améliorer la convivialité de vos interfaces graphiques.

Sommaire