Sortie de Qt Creator 2.7.2

Qt Creator 2.7.2 vient de sortir. Si ce n’est la correction d’un certain nombre de bogues (bogues lors du déploiement : QTCREATORBUG-9291, QTCREATORBUG-9299, QTCREATORBUG-9294 ; plantages fréquents : QTCREATORBUG-9660 ; débogage, designer Qt Quick, support de C++), cette version améliore les outils proposés pour le développement pour plateformes Android.

Source : http://blog.qt.digia.com/blog/2013/07/03/qt-creator-2-7-2-released/

Télécharger Qt Creator 2.7.2 (aussi inclus avec Qt 5.1.0).

Sortie de Qt 5.1

Un peu plus de six mois après la sortie de Qt 5.0 (fin 2012), voici Qt 5.1 qui pointe le bout de son nez, deux semaines après la RC. Initialement, cette version était prévue plus pour des corrections de bogues et pour assurer la stabilité du framework, mais elle contient bien plus, notamment en ce qui concerne le support de plateformes, la maturité de Qt Quick ou d’autres fonctionnalités.

Sa distribution a aussi été amélioré. Livré avec Qt Creator 2.7.2, l’installateur nouvelle génération permet (enfin ?) d’effectuer des mises à jour de l’installation de Qt. Dans le futur proche, Qt 4.8 devrait également être disponible par ces mêmes installateurs. Actuellement, cet installateur ne propose que Qt 5.1.0 et 5.0.2, pour tous les compilateurs supportés sur la plateforme.

Nouveautés

Parmi les nouveautés, on compte une série de modules orientés Qt Quick : Qt Quick Controls et Qt Quick Layouts, sans oublier Qt Quick Dialogs, qui portent l’environnement à un niveau de fonctionnalité similaire aux widgets tout en profitant du paradigme déclaratif.

Également, Qt Sensors fait sa (ré)apparition : ce module de gestion des capteurs apparu dans Qt Mobility (un complément de Qt 4 orienté vers les applications mobiles) est désormais disponible pour Qt 5, avec le support d’Android, BlackBerry et iOS.

Un autre module fait son apparition : Qt Serialport, pour la gestion du port série, dérivé de QSerialDevice avant d’être intégré dans le framework lui-même (ce qui n’est pas sans rappeler l’orientation de KDE, soit intégrer autant de fonctionnalités que possible dans le framework, sans trop l’alourdir grâce à la modularisation).

Un troisième module non spécifique à Qt Quick entre également en scène : Qt X11 Extras donne un accès direct aux informations de l’écran sur les plateformes utilisant un serveur X.

Support de nouvelles plateformes

Un des objectifs de Digia était d’élargir le support des plateformes, notamment en ce qui concerne les mobiles, tant en open source qu’en commercial. Qt 5.1 est la première version finalisée à offrir un support étendu dans cette direction, tant pour Android qu’iOS (le support complet devrait venir pour Qt 5.2). Bien que marqué comme relativement expérimental, preuve de concept, ce support devrait être suffisant pour une grande partie des applications.

Qt sur Android supporte déjà tous les modules de Qt 5.1, à l’exception de Serialport, WebKit et Multimedia. Ce port est déjà bien intégré dans Qt Creator, au point qu’il est possible de rester dans l’EDI jusqu’au déploiement sur Google Play. Une démo y est déjà disponible.

Qt sur iOS a un niveau de maturité très proche, à l’exception de Qt Quick 2. En effet, sur iOS, il est impossible d’utiliser V8 comme moteur JavaScript, une solution sera trouvée pour Qt 5.2. Qt Quick 1 et Sensors sont notamment déjà supportés. Ce port n’est pas aussi bien intégré à Qt Creator, le déploiement sur un périphérique doit toujours se faire à l’aide de Xcode. Digia a déjà publié deux applications : SubAttack et QtQuicksand.

Sources : http://blog.qt.digia.com/blog/2013/07/03/qt-5-1-released/ et http://qt-project.org/qt5/qt51

Voir aussi la sortie des versions Alpha, Beta et RC.

Voir aussi la liste des nouveautés de cette version.

Télécharger Qt 5.1.

Chromium et Qt rassemblés dans Qt WebEngine

Un certain temps après le port de Firefox sur Qt en lieu et place de GTK+, c’est au tour de Chromium, la version open source du navigateur Web de Google, d’être le sujet d’expérimentations. Ce projet ne se compose pas que d’un moteur de rendu, il s’agit d’une implémentation complète d’une plateforme Web, de la pile de protocoles réseau au framework multimédia, le tout disponible sur un grand nombre de plateformes (tout comme Qt). L’objectif récemment poursuivi par des employés de Digia était de laisser des développeurs Qt utiliser des briques de l’environnement Chromium, au sein même de Qt Quick 2 et des widgets.

Il s’agit juste à présent d’un prototype, pour lequel la portabilité n’a pas été la première des priorités (il ne supporet actuellement que X11 sous Linux), plutôt de minimiser les modifications dans le code de Chromium. Ainsi, la série de classes QNetworkAccessManager n’est pas intégrée, le système de compilation utilise gyp et ninjas par derrière qmake. L’API n’est actuellement pas stable et le code pourrait ne jamais être supporté officiellement.

QtWebEngine se base sur Qt 5.1. Pour le compiler, il faut installer les dépendances :

sudo apt-get build-dep chromium-browser

Ensuite, télécharger les sources de Chromium :

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=$PWD/depot_tools:$PATH
fetch chromium --nosvn=True
export CHROMIUM_SRC_DIR=$PWD/src

De là, télécharger QtWebEngine et appliquer les modifications à Chromium :

git clone git://gitorious.org/qt-labs/qtwebengine.git
./qtwebengine/patches/patch-chromium.sh

Finalement, compiler QtWebEngine :

cd qtwebengine && qmake && make

Le projet vient actuellement avec deux démos, l’une utilise Qt Quick 2 et l’autre les widgets, implémentant des navigateurs Web simplistes basés sur Chromium.

Source : Experimenting with Chromiumâ„¢ and Qt.
Sources de QtWebEngine.

Nouveautés de Qt Quick dans Qt 5.1

Depuis la version 2.0 de Qt Quick distribuée avec Qt 5.0, bien des choses ont été ajoutées dans l’environnement de développement déclaratif d’interfaces. Notamment, les Qt Quick Components for Desktop, déjà rendus compatibles avec Qt 5.0, feront partie officiellement de Qt Quick.

Dispositions

Les méthodes précédentes de positionnement des contrôles (soit les ancres et un positionnement à la main) fournissaient déjà une certaine flexibilité. Cependant, dès que l’interface devient redimensionnable, ces outils montrent leurs limites. Le module QtQuick.Layouts vient en complément dans ces situations pour construire des dispositions plus flexibles encore.

Voir aussi l’article Présentation des mises en page avec Qt Quick.

Qt Quick Layouts

Contrôles

Les contrôles Qt Quick sont les équivalents directs des widgets traditionnels. Les versions précédentes de Qt Quick ne fournissaient que des primitives de relativement bas niveau, sans boutons, menus ou autres barres de progression (il fallait les coder soi-même ou utiliser un add-on). Désormais, Qt Quick vient avec QtQuick.Controls, un module officiellement supporté qui comble ce manque.

Qt Quick Controls

Vues

En plus de ces contrôles, une série de vues est également disponible. Par exemple, SplitView supporte des redimensionnements verticaux ou horizontaux entre des items d’une vue, tandis que ScrollView complémente Flickable avec une barre de défilement dans son cadre.

SplitView
ScrollView

ListView était très utile pour afficher des listes, mais nettement moins pour un tableau d’items, très fréquemment utilisé. TableView vient combler ce manque avec une apparence native, en plus de laisser l’utilisateur réarranger les colonnes et sélectionner des lignes. De plus, ces vues sont personnalisables, afin de laisser la possibilité de créer une application à l’apparence entièrement unique.

TableView

Ces composants ont été étudiés pour bien fonctionner sur toutes les plateformes (cependant, il va sans dire que, pour qu’une application complète fonctionne bien sur une plateforme plus particulière telle qu’une tablette ou un smartphone, il faudra l’adapter). Sur ces périphériques mobiles, StackView est plus adapté, en fournissant une navigation en cascade à travers une série de pages.

StackView

Gestion des plateformes

Le problème des applications Qt Quick était l’impossibilité de déterminer la plateforme d’exécution facilement, c’est pourquoi cette nouvelle version apporte la propriété globale Qt.platform.os, qui donne accès directement à la plateforme sous-jacente.

Boîtes de dialogue standard

QtQuick.Dialogs propose quelques boîtes de dialogue standard (sélection de couleur ou de fichier, pour le moment), qui appelleront généralement directement les boîtes de dialogue natives.

Gestion des fenêtres

Qt 5.0 avait apporté le support des fenêtres, maintenant amélioré. Définir une fenêtre dans une autre la rendra modale, la fenêtre fille devrait être centrée dans la fenêtre parente. Un signal de fermeture est également disponible pour répondre correctement aux demandes de fermeture.

Exposition du texte au code C++

Le composant TextEdit avait un grand problème : il ne pouvait qu’afficher du texte mis en forme, alors que des applications Qt plus complexes ont besoin de complétion automatique, de coloration syntaxique, de support de l’impression, ce qui requiert un plug-in C++, très souvent. Avec cette exposition du texte aux plug-ins C++, il a été possible de réimplémenter l’exemple TextEdit avec Qt Quick.

Texte

Toutes ces nouveautés montrent la dynamique derrière Qt Quick, la plateforme devient mature et utilisable pour bien d’autres types d’applications.

Qt Developer Days 2013

Après des Qt Developer Days 2012 quelque peu mouvementés dans leur organisation, coïncidant avec la revente de Qt à Digia, voici les Qt Developer Days 2013 déjà annoncés. L’édition européenne se déroulera début octobre, du 7 au 9, à Berlin, tandis que l’édition américaine aura lieu début novembre, du 6 au 8. Ils seront coorganisés par KDAB, ICS et Digia.

Nouveauté, cette année : le Qt Developer Day en Chine, le 6 juin, coorganisé par Digia, BlackBerry et Jolla. Qt se répand de plus en plus, notamment en Asie.

Cette édition sera particulière : il s’agit de la dixième fois que ces Qt Developer Days sont organisés, une décennie sans interruption, avec deux changements de société pour Qt (Trolltech, Nokia, puis Digia).

Parmi les sujets abordés cette année, on trouvera, bien évidemment, les nouveaux ports pour Android et iOS, dont une version finalisée est prévue pour Qt 5.2, fin de cette année (correspondra-t-elle avec les DevDays ?).

Sources : http://blog.qt.digia.com/blog/2013/04/05/save-the-dates-qt-developer-days-2013/ et http://blog.qt.digia.com/blog/2013/04/11/qt-developer-day-china-2013/.

Voir aussi : les DevDays 2012 et le reportage d’Alexandre Laurent.

Sortie de l’add-in 1.2.1 pour Qt 5

Peu après la sortie de Qt 5.0.2, voici l’add-in Visual Studio qui est mis à jour. En plus des corrections de bogues habituelles, il apporte quelques nouveautés intéressantes.

Visual Studio 2012 est maintenant supporté plus complètement, en plus des 2008 et 2010. L’ajout principal est concerne le débogueur : des visualiseurs des types de Qt 5 ont été ajoutés, ce qui permet d’afficher la valeur utile de classes comme QString au lieu de leur représentation mémoire brute.

La version commerciale ajoute le support de Qt Quick : un assistant de création de projets Qt Quick 2 est ajouté, ainsi que la coloration syntaxique QML, en plus d’une prévisualisation des fichiers QML (basée sur qmlviewer). Bien malheureusement, ces améliorations ne sont disponibles que dans la version commerciale.

Également, il est maintenant possible d’utiliser les add-ins pour Qt 4 et 5 ensemble, bien que pas en même temps – il faut utiliser le gestionnaire d’add-ins de Visual Studio pour choisir celui qu’il faut charger. Il est important de noter que, peu importe l’add-in chargé, les types de projet Qt ne varieront pas, tant ceux pour Qt 4 que 5 seront affichés.

Source : http://blog.qt.digia.com/blog/2013/04/11/visual-studio-add-in-1-2-1-for-qt-5-released/

Sortie de Qt Installer Framework 1.3

Jusqu’à présent, le Qt Installer Framework n’a été utilisé (en interne) que pour créer les installateurs du Qt SDK, bien qu’il soit également possible de l’utiliser pour installer d’autres applications et briques logicielles. C’est la raison pour laquelle il a été décidé d’en faire une annonce officielle pour la sortie de cette version, au lieu de simplement utiliser un tag Git.

Ces derniers mois, le code a été stabilisé, nettoyé, la documentation a été améliorée. Avec plus d’un an depuis la version 1.2, de nouvelles fonctionnalités ont aussi eu le temps d’apparaître : la possibilité de traduire l’installateur (pour le moment, seules des traductions en allemand et en russe sont disponibles), la mise à jour de la version de 7Zip utilisée, la compatibilité avec Qt 5 (tout en gardant celle avec Qt 4), le support des dépôts accédés par HTTPS (au lieu de seulement HTTP) pour les installateurs en ligne.

Des binaires pour la plupart des plateformes sont disponible : http://releases.qt-project.org/qt-installer-framework/1.3.0/.

Source : http://blog.qt.digia.com/blog/2013/03/27/qt-installer-framework-1-3-released/.

Sortie de Qt Creator 2.7

Un mois et demi après la sortie de Qt Creator 2.7 beta, voici la version finale de l’EDI Qt, avec (comme à l’habitude) une série de nouvelles fonctionnalités, comme un meilleur support de C++11 (de nouveaux mots-clés, la gestion des fermetures – closures – améliorée ; de plus, il considère par défaut les compilateurs comme C++11 s’il ne les reconnaît pas) et des améliorations sur la refactorisation du code (ajout d’accesseurs en lecture et écriture, notamment).

Avec la relativement récente sortie de Qt 5 et de Qt Quick 2, le support de cette technologie d’interfaces déclaratives a été grandement améliorée, notamment dans l’éditeur de code ; le mode designer graphique fonctionne également avec cette version de Qt Quick. Les paquets Qt Creator actuellement disponibles sont compilés avec Qt 4 et ne supportent pas Qt Quick 2 ; le plus simple est d’attendre Qt 5.0.2, qui sera fourni avec la dernière version de Qt Creator compilée avec Qt 5.

BlackBerry 10 se distingue fortement de ses prédécesseurs par la mise en avant d’une API native, Cascades, au lieu d’une API Java. Cette nouvelle API est construite par-dessus Qt (4 pour le moment, 5 bientôt). Il était donc normal d’attendre de la part de l’EDI un certain support. Notamment, une nouvelle page de paramètres propose de générer toutes les informations nécessaires pour les kits depuis un chemin de NDK, tout en aidant à l’enregistrement et à la génération de certificats développeurs et des autres fichiers requis pour déployer une application sur un périphérique BlackBerry. Un éditeur de fichiers BAR (utilisé pour l’apparence et le comportement des applications) fait également son apparition, avec un mode graphique et un mode XML pur.

QMake est l’outil gérant la compilation avec Qt depuis un bon bout de temps. Son successeur, QBS (Qt Building System), fait apparition dans Qt Creator, avec un support expérimental (à activer manuellement, en chargeant le plug-in associé). Notamment, toutes les sources de Qt Creator proposent tant des fichiers de projet pour QMake que pour QBS.

L’EDI est disponible sur la page des téléchargements du Qt Project.

[Android] Avancée du support d’Android dans Qt 5.1

Le portage de Qt sur Android n’est pas neuf : en janvier 2010, un système graphique fonctionnel était rendu public par BogDan Vatra.

Un peu plus d’un an plus tard, en février 2011, Necessitas sortait au grand jour, avec la première version de Qt utilisable sur Android : https://groups.google.com/forum/#!msg/android-qt/IJ7e98XO7Io/_ti9asJPEsAJ. Fin 2012, le projet Necessitas quittait le giron KDE pour passer au Qt Project, avec intégration dans Qt 5 prévue : http://blog.qt.digia.com/blog/2012/11/08/necessitas-android-port-contributed-to-the-qt-project/.

Début 2013, une branche de développement était créée sur le dépôt Git de Qt, qui vient d’être intégrée au tronc commun : le support d’Android sera bel et bien disponible avec Qt 5.1.

Cette première version s’oriente plus vers les développeurs, pour qu’ils lancent et testent de manière aussi facile que possible leurs applications sur Android. Un support plus finalisé sera disponible pour Qt 5.2, avec plus de possibilités pour le déploiement et le support de plus d’API Android.

En pratique ? Une première démo Qt 5 sur un Nexus 4, un Asus Transformer Pad TF300T et un Nexus 7 ; elle montre un grand nombre d’effets graphiques de Qt Quick 2, dont les shaders, les particules, etc., à soixante images par seconde.

L’API de lecteur multimédia de Qt Multimedia est aussi supportée en QML, ici avec un shader par-dessus.

Cette version de Qt supporte aussi le multitouch, notamment utile pour du dessin à la main. Cette vidéo montre aussi les menus natifs.

Qt 5 utilise l’API Android en version 10 (soit Android 2.3.3), c’est-à-dire qu’il est utilisable sur un très grand nombre de périphériques (selon certaines statistiques, cela concerne à peu près tous les périphériques : http://www.developpez.com/actu/52541/Android-4-0-devient-plus-populaire-que-Gingerbread-qui-a-la-peau-dure-Jelly-Bean-enregistre-une-forte-adoption/). Ici, sur un Huawei Y100 :

Qu’est-ce qui est actuellement supporté ? Les applications Qt Widgets et Qt Quick, le lecteur multimédia QML de Qt Multimedia, les capteurs les plus utilisés dans Qt Sensors, les fonctionnalités multiplateformes de Qt (comme les contrôles Qt Quick), le développement et le déploiement d’applications dans Qt Creator 2.7.

D’autres choses sont prévues, comme la distribution de Qt par Ministro (afin de partager les bibliothèques dynamiques entre les applications), ce qui sera la méthode la plus recommandée pour Qt 5.1. Tous les détails sont disponibles sur le wiki du projet (http://qt-project.org/wiki/Qt5ForAndroid).

Source : http://blog.qt.digia.com/blog/2013/03/13/preview-of-qt-5-for-android/.

[iOS] Avancée du support d’iOS dans Qt 5.1

De tout go, Digia annonce que Qt 5.2 supportera iOS, soit vers la fin 2013. Cependant, tous les détails ne sont pas encore décidés (comme ce qui concerne les restriction sur l’App Store ou le support de parties plus anciennes du code de Qt). Qt 5.1, en tout cas, contiendra une première version de ce support, le code a été intégré vendredi dernier.

Tout le développement et le déploiement passe par Xcode. Actuellement, la manière de procéder est la création d’un fichier de projet .pro, qui est exporté en un fichier de projet Xcode par QMake (et réexporté à chaque modification), ce dernier étant alors utilisé dans Xcode. Toute l’édition du code peut évidemment se faire en dehors de cet EDI.

Le style Mac de Qt pour plateformes desktop utilise l’API HITheme d’OS X pour l’affichage d’éléments natifs à l’écran. Cependant, cette API n’a pas d’équivalent sur iOS, créer une classe QiOSStyle comme l’actuelle QMacStyle n’est donc pas possible. Les styles multiplateformes tels que le nouveau Fusion sont cependant disponibles. Tous les efforts sur le style des applications seront portés sur les contrôles intégrés dans Qt Quick 2.

Apple limite fortement les possibilités des applications sur iOS. Notamment, il n’est pas possible d’utiliser un compilateur de type JIT, tel que celui utilisé dans V8 – ce qui signifie qu’il n’y aura pas de Qt Quick 2 sur iOS pour le moment. Ce problème est bien connu et une solution est à l’étude.

Actuellement, déjà quelques modules fonctionnent correctement : les widgets, les graphics view, Qt Quick 1, OpenGL, les éléments tactiles et d’orientation.

Application Qt Quick 1 sur iPad.

Pour tester cette première ébauche, il est nécessaire d’avoir Xcode installé (avec les certificats et le périphérique configurés). Ensuite, cloner qtbase

git clone git://gitorious.org/qt/qtbase.git qtbase-ios
 cd qtbase-ios/

et le compiler (soit pour le périphérique, soit pour le simulateur).

./configure -xplatform unsupported/macx-ios-clang -developer-build -nomake examples -nomake tests -release [-sdk iphonesimulator]
 make

Récupérer une démo et l’ouvrir dans Xcode :

git clone git://github.com/msorvig/qt-ios-demo.git
 cd qt-ios-demo
 ../qtbase-ios/bin/qmake
 open qt-ios-demo.xcodeproj

Source : http://blog.qt.digia.com/blog/2013/03/05/qt-for-ios-preview/