# Programmation C++/Interfaces graphiques

* Avant-propos
* Introduction
* Compilation
* Un premier programme
* Les commentaires
* Le préprocesseur
* Les types de base et les déclarations
** Exercices
* Les opérations de base
* Les entrées-sorties
* Les pointeurs
** Exercices
* Les références
* Les tableaux
** Exercices
** Exercices sur les tableaux statiques
** Exercice : Tris des tableaux à une dimension
** Solution : Tris des tableaux à une dimension
* Les structures de contrôle
** Exercices
** Exercices if...else et switch
* Les fonctions
** Exercices
* Les structures
** Exercices
* Les classes
** Exercices
** Exercices de développement
* Les espaces de noms
* Les exceptions
* Les templates
** Exercices
* Conventions d'appel
* Les fichiers
* La librairie standard
* Expressions rationnelles
* Interfaces graphiques
* Bibliographie et liens

## Anciennes pages

* Opérateurs
* Héritage
* Polymorphisme
* Avant-propos
* Introduction
* Compilation
* Un premier programme
* Les commentaires
* Le préprocesseur
* Les types de base et les déclarations
** Exercices
* Les opérations de base
* Les entrées-sorties
* Les pointeurs
** Exercices
* Les références
* Les tableaux
** Exercices
** Exercices sur les tableaux statiques
** Exercice : Tris des tableaux à une dimension
** Solution : Tris des tableaux à une dimension
* Les structures de contrôle
** Exercices
** Exercices if...else et switch
* Les fonctions
** Exercices
* Les structures
** Exercices
* Les classes
** Exercices
** Exercices de développement
* Les espaces de noms
* Les exceptions
* Les templates
** Exercices
* Conventions d'appel
* Les fichiers
* La librairie standard
* Expressions rationnelles
* Interfaces graphiques
* Bibliographie et liens

## Anciennes pages

* Opérateurs
* Héritage
* Polymorphisme
[ Modifier le sommaire ]
Il est possible en C++ de réaliser des interfaces graphiques portables c'est-à-dire fonctionnant à la fois sous Linux, sous Windows et sous Mac OS.
On parle alors de toolkits.
Citons par exemple :
* wxWidgets, disponible sous la licence "wxWindows license" qui autorise la création de programmes commerciaux sans pour autant payer de licence, et bien évidemment de créer des logiciels libres ;
* Qt, disponible de manière gratuite pour l'utilisation dans des projets openSources, sous license GNU LGPL 3 depuis la version 5.7, est une bibliothèque logicielle multiplateforme (Linux, MacOS, Tizen, Windows, ...) ;
* GTK, il est possible de concevoir des applications open source ou propriétaires avec GTK, il a été initialement créé pour les besoins de GIMP puis a été réutilisé pour réaliser le gestionnaire de fenêtre GNOME ;
* gtkmm est une bibliothèque logicielle de binding permettant l'utilisation du toolkit GTK en langage C++. C'est l'interface officielle de GTK et GNOME en langage C++. Le nom gtkmm signifie gtk-- (gtk moins moins) assez curieusement car il s'agit pour l'essentiel d'un portage en C++.
Ces toolkits comportent des composants graphiques « standards » ayant la même apparence quelle que soit la plateforme de développement. Pour que cela soit portable, un toolkit existe en différentes versions. Chaque version supporte un système d'exploitation différent et implémente les composants pour celui-ci.

## Exemple simple avec Qt

L'exemple ci-dessous affiche une fenêtre simple. Pour plus de détails, voir le livre sur la programmation Qt.

### .pro

Le fichier d'extension .pro décrit le projet Qt. Pour cet exemple, créez un fichier nommé app.pro contenant ces 2 lignes :

### C++

Créez ensuite un fichier nommé app.cpp définissant l'application :
En général, chaque classe de la bibliothèque Qt a un nom commençant par la lettre Q, et sa définition se trouve dans un fichier d'entête du même nom. L'application crée une application, en passant les arguments de la ligne de commande au constructeur, puis crée un bouton affichant "Hello world!" mais sans action associée. Ce bouton est ensuite affichée dans une nouvelle fenêtre. L'appel à la méthode exec exécute une boucle de traitement d'évènements jusqu'à ce que la fenêtre soit fermée.

### Compilation

La compilation du programme ci-dessous doit aboutir à la production d'un fichier exécutable :
* Ouvrez une fenêtre de commande et assurez vous d'avoir le répertoire du compilateur C++ et celui de Qt dans le PATH :
** Si vous avez installé la version binaire de QtSDK, lancez la console pour Qt :
*** Sous Windows : Démarrer > Tous les programmes > Qt DSK > Desktop > Qt version for Desktop (compilateur)
** Sinon, configurez la variable d'environnement PATH puis lancer une console de commandes.
* Créez le fichier Makefile à partir du fichier projet :
    qmake
* Construisez le programme en utilisant le compilateur C++ (GCC, Visual C++, MinGW, ...) :
** Pour GCC :
    make
** Pour Visual C++ :
    nmake
** Pour MinGW :
    mingw32-make
Si aucune erreur ne se produit, deux sous-répertoires debug et release ont été créés, et le fichier exécutable a été créé dans l'un d'eux :
* app.exe sous Windows
* app ou a.out sous Unix, Linux
Pour plus de détails voir La section « Compilation » du chapitre « Un premier programme » du livre sur la programmation avec Qt.