Dès lors que vous souhaitez développer une application multiplate-forme, vous ne pouvez plus vous appuyer sur les outils graphiques natifs des systèmes d'exploitation. Vous devez recourir à une bibliothèque logicielle externe, de préférence portable. Elle vous fournira les composants graphiques nécessaires à l'élaboration de l'interface graphique. Ces bibliothèques sont parfois désignées en anglais par les termes de widget toolkit ou encore GUI toolkit, autrement dit des boîtes à outils.
Parmi les plus courantes, on citera wxWidgets, GTK+ et Qt. Toutes trois sont libres et portables. Elles permettent de développer pour des applications compatibles Windows, Mac OS et Unix sur 32 et 64bits, ainsi que pour un grand nombre de plates-formes mobiles
WxWidgets est une librairie C++, mais il existe des liaisons pour Python, Perl, Ruby et d'autres langages. Elle agit en surcouche des bibliothèque natives, et permet ainsi de conserver le style graphique du système hôte.
GTK+ a été conçue au départ pour le logiciel GIMP (GTK= GIMP ToolKit). Elle est écrite en C et supporte de nombreux langages (Ada, FORTRAN, Objective Caml, Pascal, PHP, Perl, Python, Ruby, etc. et même des langage .NET comme C# au travers du binding gtk#.
GTK+ a notamment permis de développer les environnements graphiques GNOME (Linux) et la première version de maemo, à l'origine de MeeGo (Nokia).
Qt est beaucoup plus qu'une bibliothèque graphique, c'est un framework complet pour développer tout type de programmes. Le Qt SDK contient :
- le framework lui-même, qui comprend de nombreux modules (ou bibliothèques) spécialisés (3D, SVG, mobilité, réseau, support du Javascript, bases de données, etc) ;
- l'environnement de développement Qt Creator et
- Qt Quick (Qt UI Creation Kit), qui permet de développer rapidement des applications ou interfaces utilisateurs multitouch. Il a été conçu pour être utilisé aussi bien par des développeurs que des designers Idéal pour le prototypage. QML est un langage dans l'esprit du Javascript/CSS.
Qt a été notamment utilisé pour développer KDE, VLC, Maya Autodesk, Photoshop Elements, Skype, etc.
Qt est compatible avec la plupart des langages.