La beta du Qt SDK 1.1

Avec toutes les nouvelles versions sorties aujourd’hui (Qt 4.7.2, Qt Mobility 1.1.1, Qt Creator 2.1), il fallait évidemment sortir une nouvelle version du Qt SDK, qui rassemble toutes ces briques logicielles et fournit donc une bonne base pour débuter avec Qt, il contient en effet tout ce qu’il faut (un compilateur, un EDI, Qt). Par ailleurs, il faut remarquer que cette version était très attendue. C’est la première version finale à disposer des outils pour Qt Quick, la dernière pièce du puzzle Qt Quick, enfin complet.

Tout est donc rassemblé d’une manière très pratique dans ce paquet. De plus, il faut le signaler, ceux qui ont installé la Technology Preview seront récompensés : ils pourront tester la fonctionnalité de mise à jour automatique !

Ce SDK est né de la volonté de simplifier le développement avec Qt. Auparavant, deux SDK étaient disponibles, l’un pour les plateformes mobiles, l’autre pour le desktop. Les deux sont rassemblés dans ce Qt SDK. Depuis la beta, quelques changements sont apparus :

Qt 4.7.2 for Symbian ^1 and Symbian ^3
Qt 4.7.2 for the Desktop
Qt 4.7.2 for the Qt Simulator
Qt Mobility 1.1.1 for Symbian^1, Symbian^3 and the Qt Simulator
Qt Creator 2.1 final
Qt Simulator 1.1 beta

En sus, le paquet pour Symbian a été mis à jour, fournissant maintenant tous les outils nécessaires pour développer pour Symbian. Dans la même veine, les utilisateurs de Linux et de Mac OS X verront aussi apparaître les paquets SIS, permettant d’installer Qt sur des périphériques Symbian.

Source : http://labs.qt.nokia.com/2011/03/01/qt-sdk-1-1-beta-released/

Qt Creator 2.1.0, le dernier maillon de la chaîne Qt Quick disponible

La sortie la plus attendue du jour dans l’univers Qt : Qt Creator 2.1, la dernière version en date de l’EDI Qt par Nokia.

Qu’apporte-t-il de si révolutionnaire ? La version officiellement utilisable des outils pour Qt Quick, dont un éditeur visuel, un éditeur graphique (interchangeables : on peut passer du visuel au code et vice-versa, ce qui n’était pas possible précédemment) ainsi qu’un débogueur spécialisé dans les interfaces Qt Quick. D’autres améliorations majeures concernent le support des applications mobiles.

Voici une liste abrégée, sans ordre spécifique ni même complète des nouveautés de cette version :

Semantic C++ highlighting: Highlighting of types (no “Q…” magic anymore, hurray), local variables vs members, virtual methods
Generic highlighting adds highlighting for various file types based on the Kate highlight definition specification
C++ class view and image viewer contributed by Denis Mingulov
Outline views for C++ and QML
Searching for C++ symbols matching a pattern (via advanced find dialog)
Wizard for adding libraries to pro files, including all the necessary fancy magic for include paths and static libs
Various debugging improvements on all platforms
Improved QML code editing with a faster code model and a new indenter
Find usages and improved follow symbols in QML code
Graphical QML tool bar (that you can get on request) for setting e.g. fonts and colors in the QML code editor
Project wizards for Qt Quick applications that also handle deployment to devices, and for custom QML extension plugins
Mobile application project wizards that provide you with the needed setup for Symbian and Maemo, and packaging and deployment
Various improvements to deployment to Maemo targets and Symbian support
Click on QObject::connect warnings in application output to jump to the code

Cette version est d’ores et déjà disponible sur les serveurs de Nokia : http://qt.nokia.com/downloads

Source : http://labs.qt.nokia.com/2011/03/01/qt-creator-2-1-0-released/

Le futur de Qt Quick

Il y a peu arrivait Qt Creator 2.1, la dernière version stable en date de l’EDI Qt de Nokia. Cette version apportait un grand bénéfice : l’arrivée des outils pour Qt Quick, à savoir le débogueur, l’éditeur de code et l’éditeur graphique. Maintenant, Qt Quick va continuer à évoluer, depuis cette version 1.0 vers un outil encore plus utile pour tous les développeurs d’applications.

Dans un futur proche, il est prévu d’ajouter le support de fonctionnalités comme l’interaction par mouvement de pince, voire même libres, le support des dispositions (layouts) de fauche à droite et bien d’autres.

TouchArea

En ce qui concerne les mouvements libres, il s’agit du TouchArea, un élément QML qui permet de recevoir les données brutes de toucher sur l’écran. Ceci peut être utile quand on cherche à mémoriser les points touchés directement en QML, soit en utilisant des bindings de propriétés ou par le biais de fonctions événementielles JavaScript. Cela pourrait se révéler utile pour des jeux basés sur le toucher et pour la reconnaissance de gestes basiques personnalisés directement en JavaScript.

Il s’agit actuellement d’un plug-in dont les sources sont évidemment disponibles, prévu pour Qt 4.7.

Pistes d’évolution

QML pour MeeGo n’avancera plus avant un certain temps. Cependant, le support de Symbian3 est d’ores et déjà complet. Maintenant, on pourra créer bien plus facilement des applications au look natif, sans que chaque développeur doive recréer des éléments de base comme des boutons ou des listes d’objets.

Quid du desktop ? Toutes les plateformes desktop sont toujours activement testées avec les nouvelles fonctionnalités, les nouveaux tests. On peut utiliser QML pour épicer quelque peu les applications desktop habituelles. Le futur est cependant bien préparé à la manière Qt et de nouvelles pistes d’investigation sont envisagées pour rendre Qt Quick Components utile sur desktop.

Aussi, l’accélération graphique devient de plus en plus importante dans les périphériques mobiles, le besoin d’un architecture type canvas diminue, remplacé par un graphe de scène, avec des animations. Finalement, quelques pistes sont aussi envisagées pour l’intégration de la 3D au QML.

Qt Quick 1.1

Plus proche, Qt Quick 1.1. Il est prévu pour Qt 4.7.4, à en croire la documentation.

Cela montre aussi une fonctionnalité intéressante : on peut choisir la version de Qt Quick à employer, grâce aux imports versionnés.

Sources

Qt Quick 1.0 and beyond (or, the post of many links)
A TouchArea for QML
import QtQuick 1.1

Qt Mobility 1.2 disponible en beta

Après la sortie de la Technology Preview en décembre et de la plus récente Release Candidate plus tôt ce mois, c’est maintenant la beta de Qt Mobility 1.2 qui sort.

Cette sortie implique que ses développeurs considèrent les API comme raisonnablement matures et stables, mais pas encore gelées. Ils espèrent geler les API après un petit coup de polish et ainsi les rendre prêtes pour utilisation dans le développement d’applications.

Les sources sont disponibles :

http://get.qt.nokia.com/qt/add-ons/qt-mobility-opensource-src-1.2.0-beta1.zip

http://get.qt.nokia.com/qt/add-ons/qt-mobility-opensource-src-1.2.0-beta1.tar.gz

La documentation est aussi déjà disponible.

Source : http://labs.qt.nokia.com/2011/04/12/qt-mobility-1-2-beta-package-released/

Qt Quick 3D disponible en technology preview

Il y a à peu près un an, Qt 3D était annoncé sur les Qt Labs Blogs. Il a commencé comme un projet de recherche Qt pour apporter quelques facilités à l’écriture et la portabilité du code OpenGL en 2008-2009, quelques classes ont déjà trouvé leur place dans l’API OpenGL de Qt.

Maintenant, Qt s’oriente de plus en plus vers Qt Quick. La démo a déjà bien montré que le projet Qt3D est passé d’un set de classes C++ à un environnement de script 3D.

Quels sont les derniers travaux sur le projet ? Qt Quick 3D. On a sous la main toute la puissance du code C++ implémentant les graphes de scène, le chargement des ressources, avec une API développeur exclusivement orientée QML.

Que peut-on déjà faire ?

  • Créer dune application QML avec du contenu 3D.
  • Charger des modèles depuis 3DMax ou Blender.
  • Ajouter des formes comme des cylindres ou des cubes.
  • Insérer du code de shader en QML pour créer des effets.
  • Animer la scène avec des rotations, des translations, des mises à l’échelle.
  • Contrôler la scène avec des états QML, des transitions et des animations.
  • Écrire la logique de l’application en ECMAScript et utiliser Qt Quick 2D en parallèle.

La vidéo : http://www.youtube.com/watch?v=qeZY6h9gBVM

Ce n’est pas encore complet, il reste encore beaucoup de choses à travailler – peut-être auriez-vous des idées à suggérer ? Ce qui va venir dans le futur :

  • le support pour la prochaine version de QML) ;
  • le support du réseau (jusque maintenant, les URL doivent être locales) ;
  • l’intégration à Qt Creator du chargeur de modèles ;
  • des animations plus sophistiquées ;
  • l’intégration d’un moteur physique.

Tout cela est encore en développement, mais les développeurs présentent le tout pour avoir des retours sur ces paquets et les fonctionnalités qu’ils fournissent. Les bogues connus sont listés (http://bugreports.qt.nokia.com/secure/IssueNavigator.jspa?mode=hide&requestId=10286), c’est aussi le bon endroit pour soumettre de nouveaux rapports de bogue.

Les sources et quelques paquets de binaires sont d’ores et déjà disponibles : ftp://ftp.qt.nokia.com/qt3d/.

Source : http://labs.qt.nokia.com/2011/05/20/qt-quick-3d-downloads-available/

Qt 4.6 Release Candidate

Un peu plus de détails en français sur cette nouvelle version.

Cette version RC est très proche de la version finale : depuis la version beta, en fait, peu de choses ont changé – des corrections de bugs, l’affinage des nouvelles API, mais aussi la prise en compte de remarques des utilisateurs.

Son but ? Recueillir un maximum d’opinions sur Qt, des rapports sur les bugs critiques et moins importants. La version finale est toujours prévue pour fin 2009.

Pour la première fois, cette version est disponible sous une foultitude de formes :
– Les habituelles sources,
– Les binaires habituels pour GCC sous Windows, Linux, Mac OS X (Carbon & Cocoa) et Symbian,
– Les nouveaux binaires : pour Visual Studio 2008.

Il faut encore remarquer une nouveauté à ce niveau : GCC 3 n’est plus fourni par défaut avec Qt Creator, tout a été mis à jour vers GCC 4.4 (y compris les binaires fournis). Sous Windows, l’installateur ne propose plus de télécharger MinGW, mais bien d’utiliser une version installée sur votre ordinateur. Une version de MinGW est disponible sur le site de Qt avec quelques patchs pour le compilateur et le support de nouvelles API.

Que manque-t-il encore à cette version avant la sortie de la version finale ? Si vous l’avez déjà utilisé, y a-t-il nombre de bugs à corriger ?

Réagissez !

Qt Mobility 1.1.0 – la beta

Le paquet Qt Mobility 1.1.0 est désormais disponible en beta ! Il fournit tout un set de nouvelles API, de grandes améliorations des API existantes ainsi que le support de nouvelles plateformes. Parmi les nouvelles API, nous pouvons compter Organizer, Versit/Organizer, Document Gallery et Feedback. Du côté des améliorations, l’API Location a été étendue avec les fonctionnalités si bien nommées Maps, Navigation et Landmarks ; l’API Multimedia a reçu des fonctionnalités de Camera. En images, la démo Mapviewer sur plusieurs plateformes :

Mapviewer Demo sur Maemo 5

Mapviewer Demo sur Symbian^3

De plus, des bindings QML sont disponibles, ce qui ne laisse présager que le meilleur tant pour les développeurs que les designers d’interfaces ! Des interfaces animées, riches, puissantes et mobiles développées en un rien de temps, une technologie apparue avec Qt 4.7.

Au niveau du support des plateformes mobiles, MeeGo, le nouvel OS développé par Intel et Nokia, est également supporté, partiellement pour le moment. Cependant, faisant partie du tier 1 des plateformes supportées, ces manques vont bientôt être comblés ; l’objectif est que MeeGo devienne la plateforme principale pour Qt Mobility.

Un changement très important est à noter pour cette version : l’API Telephony Events n’est plus et ne sera plus disponible dans Qt Mobility. Pourquoi ? Cette décision se base sur le constat que cette API n’apportait au final pas grand chose aux développeurs tiers. Elle avait été créée pour contrôler les événements de téléphonie du mobile ; cet utilisation est fort valable mais requiert beaucoup plus de recherche en termes d’événements et dans le domaine de la téléphonie pour voir comment répondre au mieux aux besoins des utilisateurs. Pendant cette phase de Technology Preview, nous avons remarqué que le peu de fonctionnalités dans une API aussi prometteuse ne pouvait que déconcerter les utilisateurs de cette API. Par conséquent, son développement a été arrêté.

Les bindings QML requièrent Qt 4.7, évidemment. Le paquet Qt Mobility 1.1 beta est disponible pour les plateformes Symbian en utilisant le paquet SIS pour Symbian. Il supporte aussi Maemo. Nous n’avons pas de nouvelle sur le firmware de Maemo 5 à communiquer pour le moment, nous vous tiendront au courant dès que nous aurons quelque chose.

Télécharger Qt Mobility 1.1.0 beta !

Qt Mobility 1.2, la Technology Preview se focalise sur le support de MeeGo

L’équipe de développement de Qt Mobility aimerait nous proposer ses avancées sur la version 1.2 – actuellement toujours en l’état de Technology Preview, rien n’est donc finalisé – ainsi que, comme cela était prévu pour la version 1.2, des paquets RPM pour tester sur MeeGo (en effet, l’objectif principal de cette version était le support de cette plateforme). Les sources sont aussi évidemment disponibles en paquets séparés, si vous souhaitez tester cette technology preview sous d’autres plateformes (pas de paquet disponible pour Symbian ou autre). Cette version de Qt Mobility requiert au moins Qt 4.7.0.

La version beta est prévue pour la dernière semaine de janvier 2011 ; ensuite, la version finale, pour début 2011 (pas plus de détails pour le moment). Maemo 5 ne sera pas supporté dans cette version officiellement, des paquets compilés par les communautés seront très vraisemblablement disponibles, cette distribution ayant fusionné avec Moblin d’Intel pour former MeeGo ; il sera donc normalement possible de mettre à jour tout système utilisant Maemo 5 et passer à MeeGo.

nt fusionné avec Moblin d’Intel pour former MeeGo ; il sera donc normalement possible de mettre à jour tout système utilisant Maemo 5 et passer à MeeGo.

Quelles sont les nouvelles fonctionnalités ?

Deux nouveautés sont à mettre sur le devant de la scène : les connectivités Bluetooth et NFC (Near Field Communication). Vous pouvez aussi consulter la roadmap complète. Quelques problèmes sont d’ores et déjà connus pour cette version.

Installation

Sous MeeGo, ces quelques commandes installeront la dernière version :

sudo zypper addrepo http://download.meego.com/live/devel:/qt-mtf:/qt-mobility:/1.2tp1/testing/  mobility-1.2-tp1
 
sudo zypper addrepo http://download.meego.com/live/Trunk:/Testing/standard/ trunk-testing
 
sudo zypper refresh
 
sudo zypper install qt-mobility
 
sudo zypper install qt-mobility-examples

Quelques pensées sur Qt 5, quelles seront ses lignes directrices ?

Six ans déjà que Qt 4.0 est sorti, en juin 2005. Depuis lors, beaucoup de choses ont changé dans l’industrie du logiciel : le développement se déroulait principalement pour le desktop, alors que les périphériques mobiles se sont répandus. L’interface utilisateur est passée de la souris au toucher, du statique au fluide. Sept versions mineures depuis cette époque ont permis à Qt de s’approcher des demandes actuelles, avec la sortie de Qt Quick par exemple. La base d’utilisateurs de Qt ne cessant de croître, il faut toujours rester proche des besoins nouveaux des développeurs.

Ainsi, pour rester à la pointe de la technologie et un framework leader dans l’industrie en général, Qt doit continuer à se renouveler. Qt 4 a été une évolution, les prochaines versions de Qt devront être dans sa perspective technique. Ces dernières années, de nouvelles fondations ont été esquissées pour la prochaine génération : Qt Quick, QML Scenegraph, Lighthouse, Qt WebKit.

En plus de son orientation vers l’open gouvernance, voici quelques pistes architecturales pour Qt 5.

Objectifs pour Qt 5

Mieux utiliser le GPU, pour obtenir des applications graphiques fluides et performantes, même avec peu de ressources.
Rendre la création d’applications avancées plus facile et plus rapide, avec QML et JavaScript.
Faire en sorte que les applications connectées au Web soient aussi puissantes que possible, notamment au niveau de l’insertion de contenu Web dans des applications Qt.
Réduire la quantité de code requise et sa complexité pour implémenter et maintenir un port.

Qt 4.7 contient encore du vieux code qui empêche certaines évolutions et Qt d’être aussi bon que possible pour la création d’applications next-gen. La plupart du code convient encore, alors que certaines parties bloquent le chemin de Qt 4.x.

Faciliter la migration entre Qt 4 et Qt 5

Avec Qt 5, il est prévu d’effectuer des changements bien précis dans les API pour abandonner certaines limitations du passé. La difficulté du portage de Qt 3 vers Qt 4 ne sera pas réitérée : la compatibilité des sources sera conservée pour la majorité des cas, alors que, à d’autres endroits, il sera nécessaire de la briser.

Il est actuellement envisagé de se focaliser sur un petit ensemble de systèmes supportés (Wayland, X11 pour Linux, en plus de Mac OS X et de Windows), le nombre total de plateformes supportées dépendra de l’activité de la communauté, suivant le principe de l’open gouvernance. Les autres systèmes d’exploitation ne seront pas maintenus par Nokia (principalement les UNIX commerciaux). Le but de Qt 5 est de fournir les meilleures fonctionnalités sur chaque plateforme, ce qui implique que l’on va d’abord fournir des fonctionnalités plus différenciées entre les OS, tout en offrant une réutilisation du code aussi efficace que possible pour la majorité des plateformes.

Développé ouvertement

Le modèle de développement va complètement changer entre Qt 4 et Qt 5, changement qui se profile depuis déjà longtemps : Qt 4 a principalement été développé par Trolltech puis Nokia, le fruit de ce travail a été publié. Qt 5 se veut développé par la communauté, un projet open source dès le tout début. Il n’y aura pas de différences entre un développeur de chez Nokia et un contributeur externe.

Vision

Qt 5 devrait être la fondation d’une nouvelle manière de développer des applications. En offrant toute la puissance de Qt en C++ natif, le focus sera déplacé vers un modèle, où le C++ est principalement utilisé pour implémenter les fonctionnalités derrière Qt Quick. Qt 5 mettra Qt Quick au centre, sans se couper du code déjà existant, il s’agira plus d’une restructuration. Les applications Qt/C++ traditionnelles vont continuer à fonctionner avec Qt 5, même si quelques changements vont être apportés sur les fondements de la manière de développer des applications.

On devrait s’attendre à ce que toutes les IU soient écrites en QML. JavaScript deviendra un citoyen de première classe de l’environnement Qt : beaucoup de logique, voire toute une application sera écrite en JavaScript, non en C++. Le but est que les développeurs commencent d’abord avec QML et JavaScript pour n’implémenter des fonctionnalités en C++ que lorsque cela est nécessaire. Dans ce cas, toute la puissance des API C++ pourra être utilisée pour implémenter des fonctionnalités plus complexes ou dont l’exécution doit être très rapide.

Le modèle basé sur QWidget sera conservé, les API liées aussi, pour la compatibilité, mais le long terme devrait voir QML comme le futur des interfaces utilisateur pour desktop. La solution retenue sera probablement des composants basés sur QML qui s’intègrent dans le style natif des plateformes desktop.

Les quatre grands changements architecturaux

Les premiers changements sont déjà en cours depuis un certain temps, le travail débute pour le reste. La plupart de ces changements pourraient être effectués avant août.

Changer l’architecture de la pile graphique

Qt Quick et QML Scenegraph seront au centre de la nouvelle architecture. QPainter sera toujours disponible et est très utile pour bien des choses, mais il ne sera plus utilisé pour l’interface principale. Qt aura besoin d’OpenGL (ES) 2.0 pour fonctionner. Les QWidget seront rendus par-dessus le graphe de scène, pas l’inverse comme actuellement.

Qt Components et Qt Mobility feront donc partie intégrante de Qt, plus des modules avec un statut spécial.

Baser tous les ports de Qt sur Lighthouse

Le projet Lighthouse a été lancé pour fournir une meilleure manière d’abstraire l’intégration au système de fenêtrage que ce qui est actuellement disponible. La maturité est proche avec Qt 4.8, son utilisation sera probablement requise pour Qt 5.0.

Utiliser une structure de répertoires modulaire

Beaucoup a déjà été fait ces dernières semaines, le travail est d’ores et déjà visible dans les nouveaux dépôts : http://qt.gitorious.org/qt. Cette modularisation va permettre de faciliter et d’accélérer l’intégration de contributions à Qt.

Séparer les fonctionnalités liées à QWidget dans une bibliothèque distincte

Les classes basées sur QWidget sont actuellement très importantes ; le modèle va cependant changer et les IU seront principalement faites avec QML. Séparer les fonctionnalités basées sur QWidget est donc une manière d’obtenir une architecture propre dans Qt 5.

Beta fin 2011, version finale en 2012

On ne doit pas trop changer dans les fondations de Qt, on veut aussi rendre facile le portage d’applications vers Qt 5 : on ne peut donc pas trop modifier la base de code déjà en place. Beaucoup des changements proposés se basent sur la modularisation de Qt, avec chaque bibliothèque partagée dans son propre répertoire. On devra supprimer quelques API rarement utilisées si elles se révèlent contraignantes à maintenir sans empêcher d’avancer. Du code en version beta devrait être disponible fin 2011, avec une version finale pour 2012.

Merci à Jacques Thery pour sa relecture !