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

Il y a quelques temps, je vous dis­ais que je cher­chais à m’extraire des tech­nolo­gies de Pcsoft con­cer­nant le développe­ment d’applications, au moins pour la par­tie ordi­na­teurs fix­es et mobiles (pour le web, j’ai plusieurs autres solu­tions). Alors, j’ai cher­ché, inter­rogé pas mal de monde… mais force est de con­stater que rien ne pou­vait rem­plac­er com­plète­ment Windev et Windev Mobile. Pour­tant, un nom reve­nait sans cesse, même s’il ne fai­sait que cou­vrir une par­tie du besoin : il s’agit de Qt, son envi­ron­nement, ses librairies et ses out­ils.

Il répondait au besoin de mul­ti­plate­forme, d’éditeur Wysi­wyg et de per­for­mances. J’ai com­mencé 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 pro­duit il y a fort longtemps (2001) et son coté «com­mer­cial » de l’époque me déplai­sait – c’était pas gra­tu­it (pour Win­dows) et, de mémoire, ce n’était pas à la portée de la pre­mière bourse. Et puis, je pen­sais que c’était juste une alter­na­tive à Gtk ou wxWid­get: Un édi­teur de fenêtre en gros… Depuis, j’ai décou­vert que c’était un envi­ron­nement très riche, rel­a­tive­ment opti­misé… Qt est avant tout un frame­work com­plet et mul­ti­plate­forme avec lequel tous types d’applications pour­ront être réal­isées. Dévelop­pé en C++, il dis­pose de nom­breux bind­ings qui le ren­dent acces­si­ble depuis Python, Java, Ruby, PHP, C#La liste des mod­ules est diponible ici.

De nom­breux pro­duits utilisent Qt. Par­mi eux : VLC, Google Earth, Skype, KDE, Adobe Pho­to­shop Ele­ments, Autodesk Maya, DAZ 3D

Depuis la ver­sion 4.5, il y a 3 licences :

  • Com­mer­ciale : vous per­met de faire ce que vous voulez avec le code de Qt et votre code

  • GPL V3 : tout code dévelop­pé avec la ver­sion GPL de Qt doit aus­si être GPL.

  • LGPL v2.1 : sim­i­laire à la GPL, mais si Qt est lié dynamique­ment (DLL dans le réper­toire) à votre appli­ca­tion, le code de votre appli­ca­tion peut être fermé/propriétaire.

Je reste un peu per­plexe sur la dif­férence entre la ver­sion com­mer­ciale (295$/mois pour au moins 12 mois) et LGPL v2.1 – Gra­tu­ite ?

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 trou­verez sur cette page dédiée (que je met­trai à jour avec les élé­ments de cet arti­cle dans quelques temps).

Voici les dernières news que j’ai col­lec­té sur Qt – vous en déduirez facile­ment sa cou­ver­ture fonc­tion­nelle si vous ne con­nais­sez pas le pro­duit. Si le sujet vous intéresse, notez que Thibaut Cuve­li­er est très act­if à ce sujet, je vous con­seille son blog.

La ver­sion 5.9 vient de sor­tir (3 Juin) – il fau­dra atten­dre la fin de l’année pour la ver­sion 5.10. Plus per­for­mante, plus sta­ble. Pas mal de nou­veautés égale­ment, dont quelques-unes coté Qt 3D. Depuis la ver­sion 5.5, Qt pos­sède son pro­pre moteur 3D (final­isé en 5.7). Qt GUI peut met­tre en cache des shaders et exploiter des com­pute shaders. Il sup­porte d’avantage égale­ment C++11. Pour plus d’infos, c’est ici. Le ren­du physique (PBR) est main­tenant extrême­ment util­isé dans les moteurs de ren­du afin d’augmenter le niveau de réal­isme du ren­du.

Le mod­ule « Ani­ma­tion » per­met une ani­ma­tion par keyframes par inter­po­la­tion, en util­isant des splines. Il y a même un LOD (la classe Qlevel­OfDe­tail) d’implémenté pour gér­er des scènes de grande taille !

Depuis la ver­sion 5.9, le ren­du des appli­ca­tions Qt Quick passe par Open­VG. Tout comme OpenGL, c’est une API du groupe Khronos. C’est pour accélér­er matérielle­ment le ren­du 2D, tout en étant vec­to­riel, donc red­i­men­sionnable à l’infini sans perte – et sou­vent plus léger aus­si en mémoire. A pri­ori, c’est surtout intéres­sant pour l’embarqué ! On apprend égale­ment que Qt 3D pour­rait s’enrichir de fonc­tion­nal­ités ori­en­tées réal­ité virtuelle.


Cutelyst : Il s’agit d’un frame­work Web util­isant Qt, très per­for­mant (écrit en C++). Vient de pass­er en 1.7.

La nou­velle mou­ture de Qt Cre­ator 4.3 est sor­tie fin Mai. Offre main­tenant une vue directe sur le code source QML on peut utilis­er le Wysi­wyg ou QML, indépen­dam­ment et simul­tané­ment. Dis­pose d’un pro­fileur de code QML per­me­t­tant de track­er les pertes de per­for­mance.

Qt Webkit sem­ble aus­si avoir gag­né en matu­rité et « peut à nou­veau être util­isé sans arrière-pen­sée dans un nou­veau pro­jet ». Pour rap­pel, le webkit, c’est ce qui per­met de ren­dre une page HTML (voir un site com­plet) dans une fenêtre Qt (voir cet autre arti­cle sur les moteurs de ren­du HTML)

Sor­tie de QxOrm 1.4.4 et QxEn­ti­tyEd­i­tor 1.2.2 : Il s’agit d’une solu­tion pour gér­er sa couche de don­nées per­sis­tante en C++/Qt ! L’ORM pour Qt ne dépend plus de boost, il utilise désor­mais C++11. Pour plus d’infos.

Que sait-on de la 5.10 ? Il est ques­tion d’inté­gr­er directe­ment Vulkan, avec des class­es Qvulkan. On par­le aus­si d’une API de Wid­gets nat­ifs, mais il fau­dra prob­a­ble­ment atten­dre la ver­sion 6. Cela sig­ni­fie qu’en plus de pass­er par les Wid­gets de Qt qui sont des boites noires, on pour­ra aus­si implé­menter directe­ment des wid­gets du sys­tème sur lequel l’application tourne, mais il fau­dra se débrouiller pour la porta­bil­ité de l’application.

Voilà, cela a l’air très intéres­sant – je crois qu’il y a de quoi y pass­er plusieurs mois pour décou­vrir tous les com­posants et librairies asso­ciées. Si vous souhaitez plus d’infos, il y a cette FAQ sur devel­oppez. Et si vous voulez débuter le développe­ment sous Qt, voici un bon tuto en français.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.