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) :
- du réseau (QtNetwork)
- de la manipulation de documents XML (QtXml, QtXmlPatterns et QtSvg) ; un moteur de rendu HTML basé sur WebKit est également intégré (QtWebKit)
- de la base de données relationnelle (QtSql) (avec un support natif des principales bases de données comme DB2, MySQL, Oracle, ODBC, PostgreSQL ou SQLite
- du multimédia via Phonon (Phonon module) qui est développé au sein de KDE
- du script via QtScript (QtScript)
- de la 3D via OpenGL (QtOpenGL)
- de l'internationalisation via un outil pour les traducteurs : Qt Linguist (internationalization)
- de la programmation concurrente via des processus légers (threads) ou un framework généraliste QtConcurrent (threads QtConcurrent)
- des tests unitaires (QtTest)
- de créer des interfaces graphiques pour les non-programmeurs via l'excellent Qt Designer (Designer manual)
- ...
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 :
- Animation, issu du projet Kinetic, il permet de créer des animations d'éléments graphiques et de jouer sur leurs propriétés
- State Machine, qui utilise la sémantique des machines à état State Chart XML promue par le W3C. Ce framework simplifie la gestion des changements d'état (comme un bouton qui passe de non cliqué à cliqué) et l'action à réaliser qui suit.
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!