Programmation C++/Interfaces graphiques
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
[modifier | modifier le wikicode]L'exemple ci-dessous affiche une fenêtre simple. Pour plus de détails, voir le livre sur la programmation Qt.
.pro
[modifier | modifier le wikicode]Le fichier d'extension .pro
décrit le projet Qt.
Pour cet exemple, créez un fichier nommé app.pro
contenant ces 2 lignes :
TEMPLATE += app
QT += widgets
C++
[modifier | modifier le wikicode]Créez ensuite un fichier nommé app.cpp
définissant l'application :
#include <QApplication>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPushButton bouton("Hello world!");
bouton.show();
return app.exec();
}
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
[modifier | modifier le wikicode]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)
- Sous Windows :
- Sinon, configurez la variable d'environnement PATH puis lancer une console de commandes.
- Si vous avez installé la version binaire de QtSDK, lancez la console pour Qt :
- 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 Windowsapp
oua.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.