Qt, framework portable pour bureau et mobiles

Une interface graphique pour le bureau et les mobiles que l'on peut même retrouver dans les façades d'un décor virtuel en 3D!

Qt (cute) est une bibliothèque graphique pour le développement de GUI, interface graphique utilisateur, multi-plateformes, ce qui inclut Linux, Windows, Android et iOS.
Elle propose des composants d'interface graphiques, les widgets, ainsi que d'autres pour l'accès aux bases de données, le traitement de fichiers XML, une API de système de fichiers.
Un outil de développement, Qt Creator est offert gratuitement pour réaliser des applications Qt.

Qt creator
Qt Creator est un EDI spécialisé pour des apps Qt

Parmi les applications majeures utilisant Qt sont l'environnement Linux KDE, le navigateur Opera (sous Linux), VLC, Google Earth, Skype.

La version 5 intègre le compilateur V8. La tendance est à l'utilisation de C++ pour créer les modules tandis que JavaScript est le langage de l'interface.

La version 5.4 rend obsolète le moteur de rendu WebKit, remplacé par WebEngine basé sur Chromium. Grâce à WebChannel, le code JavaScript et natif peuvent communiquer et les objets créés en C++ peuvent s'utiliser dans une application HTML. WebSocket est aussi supporté.

Un widget Qt peut être incrusté dans une scène en 3D, comme on le voit dans la vidéo de démonstration WolfenQt. En réutilisant l'algorithme classique du jeu Wolfenstein 3D, on place dans les murs un widget d'affichage permettant de faire apparaître une quelconque application sur les murs du labyrinthe. L'affichage rapide est obtenu en mixant la librairie graphique OpenGL avec le code Qt

Qt a été développé par la société Trolltech, acquise en 2008 par Nokia. Trolltech devient alors Qt Software. En août 2012, Nokia cède Qt à la société finlandaise Digia dont le but est de le porter sur toutes les plateformes dont Android et Windows 8. En 2014, Digia décide de fonder une entreprise séparée dédiée entièrement à Qt.

Qt et JavaScript

Peut-on faire un programme Qt en JavaScript? Il ne s'agit pas d'utiliser JavaScript en association avec les composants de Qt comme le fait Qt Quick mais d'écrire des programmes en JavaScript utilisant Qt. Cela afin d'utiliser un langage de script que l'on connaît bien si l'on est webmaster, sur le poste local avec une interface graphique...

C'est l'objet du module node-qt qui fonctionne avec Node.js. Cette plateforme permet d'utiliser JavaScript en ligne de commande, et ce module intègre Qt à la plateforme.
Pour l'utiliser, il faut:

  1. Installer Node.js.
  2. Installer node-qt, avec la commande: npm install node-qt.
  3. Inclure le module dans le script avec une instruction:
    var qt = require('node-qt');
    
  4. Créer une application avec:
    var app = new qt.QApplication;
  5. Créer une fenêtre avec:
  6. var window = new qt.QWidget;
  7. On peut alors ajouter un contenu à la fenêtre avec la méthode:
    window.paintEvent(function() { ... }

Tout cela se fait avec un simple éditeur de texte.

Pour plus de détails, voir node-qt sur Github. Bien sûr l'intégration dans Node permet de faire communiquer entre eux des programmes d'origines différentes, l'interface Qt pouvant cohabiter avec des pages HTML, des scripts PHP comme cela est montré dans la section JavaScript de ce site.

Qt et les mobiles

Nokia a développé Qt Quick pour les mobiles et tablette, un framework offrant des composants pour réaliser des interfaces. Cette version allégée convient aux écrans tactiles. Il intègre le langage QML, une version de JavaScript, un runtime pour accéder aux fonctions du système. Le programmeur peut l'utiliser avec Qt Creator.

Après l'annonce du partenariat entre Nokia et Microsoft, et le choix de Windows Phone 7 comme système préférentiel pour les smartphones, les développeurs s'inquiètent quand à l'avenir de Qt.
Nokia avait confirmé cependant son soutien à Qt qui fonctionne sur Symbian et Meego, avait décidé de le développer en engageant de nouveaux développeurs, mais en 2012, elle se sépare totalement de la plateforme au profit de Digia.
Après le remplacement de Meego par Tizen, dont l'interface privilégiée est HTML 5, Qt se voit plus encore marginalisé sur les mobiles. Cependant, l'interface étant devenue compatible avec Android et iOS (depuis la version 5.1), il reste possible de développer sous Qt pour mobiles à coté de la plateforme standard.

Sachant que Qt utilise JavaScript pour l'interface et embarque le compilateur V8, son intérêt semble réduit sur mobile où l'on peut aussi bien utiliser Node en combinaison avec HTML 5 pour obtenir une interface utilisateur complète (voir la section JavaScript sur ce site).

Actuellement on peut faire tourner des applications Qt sous Android, iOS, Blackberry et il est le framework des applications natives sous les OS Sailfish et Ubuntu Touch. L'application hors Sailfish aura toutefois une taille imposante.

Un package spécial est offert en 2014 pour réaliser des apps Android avec une licence commerciale et tous les outils inclus. En fait Qt n'est vraiment utilisable sur mobile qu'avec cette licence commerciale qui fournit un compilateur QML.

Voir aussi

Références et ressources