Il existe de nombreuses bibliothèques permettant de programmer une interface graphique pour un logiciel. Et la portabilité, la rapidité d'exécution, la rapidité et le coût de développement, la stabilité et la licence de votre logiciel dépendront de votre choix de bibliothèque graphique.
Cet article n'évoquera que quelques exemples importants de chaque type de bibliothèque évoqué.
I Les API natives
Certains systèmes implémentent leur interface graphique au sein même du système d'exploitation, c'est le cas de windows dont la partie graphique est nichée à l'intérieur même du noyau de l'OS.
I.1 L'Api graphique de Windows
Comme précédemment évoqué, l'interface graphique de Windows n'est pas implémentée au niveau utilisateur mais au niveau du noyau, ce qui a pour avantage d'obtenir des interfaces rapides d'exécution.
Toutefois l'utilisation directe de l'Api de Windows présente aussi de nombreux inconvénients:
- Cette Api manque d'abstraction, la gestion de l'IHM se fait en utilisant des fonctions plutôt bas-niveau. Développer une GUI avec cette Api prendra plus de temps et risque de cacher certains bugs. Toutefois une bibliothèque dont l'approche est bas-niveau pourra éventuellement pour laisser plus de possibilités au niveau graphique.
- Cette Api n'est pas portable. Votre logiciel ne pourra pas être utilisé en dehors de Windows, à moins d'utiliser l'émulation.
Vous pouvez utiliser cette Api en C ou en C++ en utilisant
les MFC et bien sûr dans beaucoup d'autres langages.
Notez que la programmation d'interfaces graphiques utilisant l'Api Windows est souvent plus confortable en utilisant des IDE tels que Microsoft Visual C++.
I.2 XWindow
Proposer XWindow en tant qu'Api native, c'est un peu mentir. En effet XWindow est déjà une bibliothèque tierce mais étant donné qu'elle se situe à la base du système d'IHM sous certains OS comme Linux/Unix, on va la classer comme ça dans cet article.
Vous pouvez utiliser XWindow pour développer des interfaces graphiques mais là encore vous vous exposez à une bibliothèque qui manque d'abstraction et demandera donc plus de temps de développement. En revanche vous obtiendrez un logiciel tout à fait portable: XWindow existe aussi sous Windows.
Autre point important, certaines implémentations de XWindow sont libres (XFree, XOrg).
II Les bibliothèques tierces
Les bibliothèques graphiques tierces sont des bibliothèques externes que vous pouvez installer sur votre système. Elles agissent généralement en tant que surcouche d'une bibliothèque de niveau inférieur (Api Windows, XWindows etc...) et offrent ainsi une interface de développement plus confortable.
II.1 Qt
Qt est une bibliothèque graphique portable, disponible pour Unix/Linux comme pour Windows. Elle est renommée pour avoir une architecture confortable.
Avant utilisation, je vous recommande de vous informer sur la licence de Qt:
Qt est prévu pour être utilisé en C++ mais on peut aussi l'utiliser avec de nombreux autres langages (C/Python etc...)
Pour avoir un exemple de Qt, il suffit de voir le bureau
KDE sous Linux ou encore le logiciel
Amarok.
=>
Site officiel
II.2 GTK
Comme Qt, GTK est bibliothèque libre et portable. Elle est également appréciée. Le logiciel
Gimp a par exemple été fait avec Gtk.
Un autre exemple est le bureau
Gnome utilisé sous Linux.
Gtk a été écrit en C mais peut être utilisé dans de nombreux autres langages.
=>
Site officiel
Exemple de gimp:
II.3 WxWidgets
Idem, libre, portable, peut être utilisé dans divers langages. Il a pour particularité de produire des fenêtres ayant le même
look que si elle avaient été programmées en utilisant l'Api native du système.
=>
Site officiel
III Cas spécifiques: les systèmes embarqués
Les systèmes embarqués sont un cas à part étant donné qu'ils sont souvent en petit écran (ex: téléphones portables, GPS etc...)
Il existe aussi des bibliothèques pour produire des GUI sur ces petits systèmes.
III.1 The Nano-X Window System
Autrefois connu sous le nom de Microwindows, c'est une petite librairie libre, à visiter.
=>
Site officiel
Publié par
kilian -
Dernière mise à jour le 4 novembre 2009 à 17:40 par marlalapocket