LinuxFR
NewsLinuxFr > Sortie de Qt 4.6 - [ cliquer pour soumission sur LinuxFr ]

scoop Qt 4.6


Qt 4.6, la bibliothèque C++ libre (GNU LGPL) et multi plates-formes vient de sortir. Comme à son habitude, à côté des optimisations plus ou moins importantes (voire spectaculaires en ce qui concerne QtScript?), deux frameworks apparaissent dans le but de résoudre différents cas d'utilisations de cette bibliothèque multi-usages.

Le support de Symbian fait son entrée au côté des principales plate-formes supportées officiellement que sont Linux, Mac OS X, Windows et Windows CE. Symbian est un système d'exploitation pour smartphones détenu par Nokia (qui est également le propriétaire de Qt depuis janvier 2008). La prise en charge de Symbian se fait au travers du framework S60.


liens

http://doc.trolltech.com/4.6/ La documentation officielle
http://doc.trolltech.com/4.6/qt4-6-intro.html Les nouveautés de cette version
http://qt.nokia.com/developer/changes/changes-4.6.0 Le journal des modifications
http://qt.nokia.com/products/appdev/developer-tools/developer-tools Qt Creator
http://fr.wikipedia.org/wiki/Qt Qt sur Wikipédia
http://qt.nokia.com/ Site de la bibliothèque Qt

corps de la dépêche


Qt, c'est quoi?
Si un seul adjectif devait désigner Qt, c'est bien celui de vaste. Cette bibliothèque permet bien plus que de simplement développer des applications graphiques portables. Qt offre diverses classes et framworks permettant de faire (liste non exhaustive) :
Un des points forts (mais pour certains c'est une critique) de Qt est le MOC, un préprocesseur de code C++ qui permet à l'aide de macros d'étendre le langage C++ en fournissant des mécanismes d'introspection et surtout une architecture de signaux (des évènements) et slots (des actions à réaliser suite à ces évènements) facilitant grandement le dialogue entre les différents objets C++ d'une application.

Qt ne se limite pas au C++ (bien que cela soit le langage de prédilection et le seul officiellement pris en charge depuis l'arrêt de QtJambi? pour Java) car plusieurs bindings existent : Python, Java, C# et quelques autres moins avancés.

Cette version, elle apporte quoi de nouveau?
Passons maintenant aux nouveautés de Qt 4.6 :

Deux frameworks développés en interne depuis plusieurs mois et dont nous avons eu des aperçus via les blogs des développeurs de Qt apparaissent : Lorsque ces deux frameworks sont utilisés de concert, les réalisations d'animations sont grandement simplifiées.

L'embarqué étant le secteur principal d'activité de Nokia, Qt se devait de fournir des outils pour gérer les évènements multi-points (comme sur l'iPhone pour donner une idée) et la gestuelle, c'est chose faite avec l'apparition des classes QTouchEvent et QGestureEvent.

La gestion d'XML est encore développée et après la gestion de XPath, XQuery et XSLT, vient s'ajouter dans cette version celui des Schema XML du W3C, permettant de valider un document XML. La manipulation d'éléments d'une page HTML est également facilitée via l'ajout de la classe QWebElement qui permet, entre autre, de sélectionner des éléments via les sélecteurs de CSS2.

Le développement du multimédia continue comme annoncé. Avec Qt 4.6, un nouveau module est ajouté, QtMultimedia, qui fournit un accès bas niveau au système audio, mais également vidéo via l'arrivée de plusieurs classes représentant des images d'un flux vidéo.

Concernant WebKit?, la version est mise à jour depuis le tronc et un remplacement en règle est réalisé dans QtScript? pour utiliser JavaScriptCore?, l'interpréteur JavaScript? de Webkit qui fait de la compilation juste à temps. Ce remplacement permet dans la majorité des cas une amélioration faramineuse (QtScript in 4.6). Toujours en ce qui concerne WebKit?, une classe QWebInspector représentant l'outil d'analyse d'une page Web (l'équivalent de l'inspecteur DOM de Firefox) fait son apparition est permet d'intégrer cet outil dans une application Qt (mais son adaptation visuelle selon la plate-forme n'est pas encore au menu de cette version...).

Pour finir dans les nouveautés, une nouvelle classe de positionnement des widgets fait son apparition : QGraphicsAnchorLayout. Dédié aux éléments QGraphics, elle permet de les positionner relativement les un par rapport aux autres. Une présentation technique de cette classe est réalisée sur un Qt Blogs

Comme j'ai bien évidemment dû oublier quelques nouveautés, une consultation de ne serait pas de trop pour les plus curieux d'entre vous.

Autour de Qt
Qt Creator, l'environnement de développement dédié à Qt, dont la première version est sortie en même temps que la version 4.5, est également . À côté de diverses améliorations, comme celle de la complétion et l'ajout d'un début de refactorisation, du support de Symbian, et de bien d'autres, s'en cache une qui pourrait intéresser nombre de lecteurs de LinuxFr : la traduction en français des outils Qt. Cette traduction, ainsi que celles en allemand, espagnol, italien, japonais, polonais, russe et slovène sont rendues possibles grâce à l'aide de la communauté qui a abattu un gros travail (). Ces contributions sont rendues possibles grâce à l'ouverture de plus en plus grande du développement de Qt, qui avant était fermé (même si l'on avait accès au source) et n'acceptait pas de contribution.

Concernant KDE, dont le développement est intimement lié à celui de Qt, la prochaine version majeure, la 4.4, dont la sortie prévue est pour février 2010, utilisera cette version de Qt.

Le futur
Il est prévu en 2010 la livraison de plusieurs choses :

La plus importante est peut-être l'arrivée de Declarative UI et du langage de description QML. Ce sont la dernière partie du projet de recherche Kinetic (qui pour rappel contient les frameworks Animation et State Machine). L'utilisation de QML (dont un début de support est présent dans Qt Creator 1.3) se veut comme une nouvelle manière de décrire les interfaces graphiques (ce que fait actuellement les fichiers .ui de QtDesigner) et comment elles doivent se comporter (et c'est là la nouveauté). L'utilisation de QML a pour objectif de rendre la conception d'interfaces graphiques attrayantes (comprendre ici : contenant des effets de transitions entre les actions comme on en rencontres souvent dans de nombreuses interfaces utilisateurs de smartphones) plus facile. Un petit tour sur un des Qt Blogs explique plus en détail à quoi ressemble QML et ce que l'on peut en faire. Le projet KDE a rapidement vu l'intérêt de QML et a décidé de commencer à travailler sur son utilisation dans Plasma (le logiciel qui gère le bureau de KDE) et ses Plasmoids (des applications à "coller" où on veut sur le bureau).

A cela s'ajoute plusieurs cas d'utilisations spécifiques aux smartphones (mais qui dans certains cas sont pertinent pour le bureau) qui vont être pris en charge par Qt et connu sous le nom de Mobility Project. Ce sera notamment le cas de la géolocalisation, de la gestion de contacts, de l'envoi de messages (SMS, MMS, Jabber via XMPP et bien sûr email), etc... Un aperçu de l'API est disponible sous forme de Technology Preview et attend des commentaires.

Et pour finir dans les grands projets dont la sortie est prévue en 2010 : le support de Maemo (la plateforme de développement utilisée par certains appareils de Nokia) est prévue. Pour l'instant Maemo utilise GTK+, le portage de Qt sur cette plateforme ne semble pas de bonne augure pour GTK+...

A plus long terme est prévu (en vrac et de manière non exhaustive) : une refonte du système de compilation, le support de SOAP (très utile pour les Web Service), une nouvelle génération de widgets (qui devrait prendre tout son sens avec l'utilisation de tous ce qui est issu du projet Kinetic), une nouvelle architecture pour la version Linux dédiée à l'embarqué (portant le doux nom de projet Lighthouse), une API 3D portable pour le bureau et l'embarqué (avec peut-être la fin de l'utilisation d'OpenGL? directement...), etc...

Pour plus de détail sur les projets en cours, vous pouvez consulter une petite roadmap.

Au final, je ne sais pas pour vous, mais je trouve le développement de Qt de plus en plus excitant!
Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]