Qt: un framework très intéressant pour le développement d'applications multiplateforme

Il y a quelques temps, je vous disais que je cherchais à m’extraire des technologies de Pcsoft concernant le développement d’applications, au moins pour la partie ordinateurs fixes et mobiles (pour le web, j’ai plusieurs autres solutions). Alors, j’ai cherché, interrogé pas mal de monde… mais force est de constater que rien ne pouvait remplacer complètement Windev et Windev Mobile. Pourtant, un nom revenait sans cesse, même s’il ne faisait que couvrir une partie du besoin : il s’agit de Qt, son environnement, ses librairies et ses outils.

Il répondait au besoin de multiplateforme, d’éditeur Wysiwyg et de performances. J’ai commencé cette page de veille sur Qt il y a quelques mois. Il faut dire que j’étais un peu allergique à Qt : j’ai testé le produit il y a fort longtemps (2001) et son coté «commercial » de l’époque me déplaisait – c’était pas gratuit (pour Windows) et, de mémoire, ce n’était pas à la portée de la première bourse. Et puis, je pensais que c’était juste une alternative à Gtk ou wxWidget: Un éditeur de fenêtre en gros… Depuis, j’ai découvert que c’était un environnement très riche, relativement optimisé… Qt est avant tout un framework complet et multiplateforme avec lequel tous types d’applications pourront être réalisées. Développé en C++, il dispose de nombreux bindings qui le rendent accessible depuis Python, Java, Ruby, PHP, C#La liste des modules est diponible ici.

De nombreux produits utilisent Qt. Parmi eux : VLC, Google Earth, Skype, KDE, Adobe Photoshop Elements, Autodesk Maya, DAZ 3D

Depuis la version 4.5, il y a 3 licences :

  • Commerciale : vous permet de faire ce que vous voulez avec le code de Qt et votre code

  • GPL V3 : tout code développé avec la version GPL de Qt doit aussi être GPL.

  • LGPL v2.1 : similaire à la GPL, mais si Qt est lié dynamiquement (DLL dans le répertoire) à votre application, le code de votre application peut être fermé/propriétaire.

Je reste un peu perplexe sur la différence entre la version commerciale (295$/mois pour au moins 12 mois) et LGPL v2.1 – Gratuite ?

Je vais pas vous refaire l’historique de Qt, vous l’avez sur Wikipédia. Et puis, il y a plusieurs éléments que vous trouverez sur cette page dédiée (que je mettrai à jour avec les éléments de cet article dans quelques temps).

Voici les dernières news que j’ai collecté sur Qt – vous en déduirez facilement sa couverture fonctionnelle si vous ne connaissez pas le produit. Si le sujet vous intéresse, notez que Thibaut Cuvelier est très actif à ce sujet, je vous conseille son blog.

La version 5.9 vient de sortir (3 Juin) – il faudra attendre la fin de l’année pour la version 5.10. Plus performante, plus stable. Pas mal de nouveautés également, dont quelquesunes coté Qt 3D. Depuis la version 5.5, Qt possède son propre moteur 3D (finalisé en 5.7). Qt GUI peut mettre en cache des shaders et exploiter des compute shaders. Il supporte d’avantage également C++11. Pour plus d’infos, c’est ici. Le rendu physique (PBR) est maintenant extrêmement utilisé dans les moteurs de rendu afin d’augmenter le niveau de réalisme du rendu.

Le module « Animation » permet une animation par keyframes par interpolation, en utilisant des splines. Il y a même un LOD (la classe QlevelOfDetail) d’implémenté pour gérer des scènes de grande taille !

Depuis la version 5.9, le rendu des applications Qt Quick passe par OpenVG. Tout comme OpenGL, c’est une API du groupe Khronos. C’est pour accélérer matériellement le rendu 2D, tout en étant vectoriel, donc redimensionnable à l’infini sans perte – et souvent plus léger aussi en mémoire. A priori, c’est surtout intéressant pour l’embarqué ! On apprend également que Qt 3D pourrait s’enrichir de fonctionnalités orientées réalité virtuelle.


Cutelyst : Il s’agit d’un framework Web utilisant Qt, très performant (écrit en C++). Vient de passer en 1.7.

La nouvelle mouture de Qt Creator 4.3 est sortie fin Mai. Offre maintenant une vue directe sur le code source QML on peut utiliser le Wysiwyg ou QML, indépendamment et simultanément. Dispose d’un profileur de code QML permettant de tracker les pertes de performance.

Qt Webkit semble aussi avoir gagné en maturité et « peut à nouveau être utilisé sans arrière-pensée dans un nouveau projet ». Pour rappel, le webkit, c’est ce qui permet de rendre une page HTML (voir un site complet) dans une fenêtre Qt (voir cet autre article sur les moteurs de rendu HTML)

Sortie de QxOrm 1.4.4 et QxEntityEditor 1.2.2 : Il s’agit d’une solution pour gérer sa couche de données persistante en C++/Qt ! L’ORM pour Qt ne dépend plus de boost, il utilise désormais C++11. Pour plus d’infos.

Que sait-on de la 5.10 ? Il est question d’intégrer directement Vulkan, avec des classes Qvulkan. On parle aussi d’une API de Widgets natifs, mais il faudra probablement attendre la version 6. Cela signifie qu’en plus de passer par les Widgets de Qt qui sont des boites noires, on pourra aussi implémenter directement des widgets du système sur lequel l’application tourne, mais il faudra se débrouiller pour la portabilité de l’application.

Voilà, cela a l’air très intéressant – je crois qu’il y a de quoi y passer plusieurs mois pour découvrir tous les composants et librairies associées. Si vous souhaitez plus d’infos, il y a cette FAQ sur developpez. Et si vous voulez débuter le développement sous Qt, voici un bon tuto en français.

Ces articles pourraient aussi vous intéresser …