Qt DevDays 2012

Alexandre Laurent

Developpez.com sera, cette année encore, présent au Qt Developer Days à Berlin. Cela sera l'occasion pour nous de vous donner un compte rendu détaillé de l'événement et des informations que nous pourrons glaner.

Cette année est une année encore plus importante que les autres, car Qt 5 approche et ce sera donc une opportunité pour en apprendre plus sur cette nouvelle version majeure.

Commentez

- Titre : Qt DevDays 2012

- Auteur : Alexandre Laurent

- Parution : 5 novembre 2012

- Licence : Copyright ® 2012 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- I-A. Présentation

- I-B. Contexte

- I-C. Les éditions précédentes

- II. Programme de formations

- II-A. Introduction à Qt pour les PC

- II-B. Introduction à Qt Quick

- II-C. Introduction à Qt pour les plateformes embarquées

- II-D. Introduction à Squish pour tester une application Qt

- II-E. La programmation modèle/vue dans Qt

- II-F. Le multithreading dans Qt

- II-G. La programmation OpenGL moderne dans Qt 5

- II-H. Les nouveautés du C++11 (focalisé à Qt 5)

- II-I. Rentrer dans le rythme avec Git

- II-J. Nouvelles de dernière minute

- III. Conférences

- III-A. Généralités

- III-A-1. Keynote : « Qt - En route pour le futur »

- III-A-2. Keynote: Qt 5 Roadmap

- III-A-3. Le projet derrière Qt

- III-A-4. Le partenariat Qt

- III-B. Embarqué

- III-B-1. Le futur de Qt sur Linux embarqué

- III-B-2. Qt sur Raspberry Pi

- III-B-3. Comment utiliser Necessitas pour créer des applications Android

- III-B-4. Porter Qt 5 sur des plateformes embarquées

- III-C. Réseau/cloud

- III-C-1. Qt et les API Google

- III-C-2. Qt et les services de Cloud

- III-C-3. Quoi de neuf dans QtWebKit de Qt 5.0

- III-C-4. Qt et les services Web

- III-C-5. Utiliser correctement SSL avec Qt

- III-C-6. Distribuer des applications QML par le réseau

- III-C-7. Plug-in QML Social Connect

- III-D. En profondeur

- III-D-1. Qt Core en détail

- III-D-2. Utiliser C++11 pour accélérer vos programmes Qt 5

- III-D-3. Créer des interfaces utilisateur Mac avec Qt

- III-D-4. QMetaType et QmetaObject en détail

- III-D-5. De bonnes intentions, sans garantie : utiliser Qt de façon inattendue

- III-E. Outils

- III-E-1. CMake et Qt

- III-E-2. Déboguer des programmes Qt multithread

- III-E-3. Qt Creator 101

- III-E-4. Débogueurs spécifiques au domaine

- III-F. Middleware

- III-F-1. Pourquoi vous devez être impatient pour Qt 5

- III-F-2. Accéder aux middlewares à partir de Qt, QML ou HTML5

- III-F-3. Applications Qt accessibles

- III-F-4. Le problème des middlewares : une histoire d'abstraction

- III-F-5. Créer des compositeurs de fenêtre avec le module Qt Wayland

- III-F-6. Addons Qt pour tout le monde : KDE Frameworks 5

- III-G. BlackBerry 10

- III-G-1. Développer avec Qt pour BlackBerry 10

- III-G-2. Connecter vos applications BB10 à Internet

- III-G-3. Comment Qt a aidé RIM pour créer BlackBerry 10

- III-G-4. BlackBerry 10 Cascades UI Framework : Un autre aperçu

- III-H. QML

- III-H-1. Composants de bureau pour QtQuick

- III-H-2. QML pour les applications desktop

- III-H-3. QML efficace : les meilleures pratiques de développement avec Qt Quick

- III-H-4. Sous le capot de Qt Quick

- III-H-5. Coder en QML : les outils pour la performance et le débogage

- III-I. Graphismes

- III-I-1. Techniques OpenGL moderne basées sur les shaders

- III-I-2. OpenGL et Qt 5

- III-J. Assurance qualité

- III-J-1. Analyse de code C++

- III-J-2. Automatisation des tests d'interfaces utilisateur Qt - 10 erreurs et solutions

- III-J-3. Automatisation de tests d'applications Qt avec CMake, CDash et Squish par l'exemple Pre-Stack Pro

- III-J-4. Architecturer pour la stabilité

- III-K. Qt au jour le jour

- III-K-1. Porter une application Qt Windows sur Mac

- III-K-2. Faire le bon choix de licence lors d'un développement avec Qt

- IV. Remerciements

I - Introduction

I-A - Présentation

Les Qt DevDays sont un événement annuel permettant aux développeurs du framework Qt de présenter les nouveautés aux professionnels. C'est aussi l'occasion pour les personnes assistant à l'événement de rencontrer d'autres développeurs Qt, d'assister à des conférences, de discuter avec les développeurs de Qt et experts de la technologie et de découvrir des projets innovants utilisant Qt.

Ainsi, sur trois jours, une cinquantaine de sessions et séminaires auront lieu. Pour rappel, le premier jour est une journée de formation afin d'apprendre à utiliser un nouveau module de Qt ou de se remettre à niveau pour participer aux conférences des deux jours qui suivent.

Ces deux autres journées permettront d'en apprendre plus sur ce que sera Qt 5, Qt Quick 2, l'évolution envisagée de Qt et son support sur les différentes plateformes du marché, que ce soit les téléphones, les PC ou encore les systèmes embarqués.

Cette année, l'édition européenne aura lieu à Berlin, du 12 au 14 novembre au Café Moskau, alors que l'édition américaine aura lieu à Santa Clara en Californie, du 5 au 7 décembre.

I-B - Contexte

Cette année est particulière. En effet, les Qt DevDays 2012 seront l'occasion d'avoir une présentation complète de la nouvelle version majeure de Qt et de poser directement ses questions aux développeurs. Ainsi, tous ceux qui veulent en apprendre plus et se préparer à cette évolution doivent suivre l'événement.

Le second aspect important de cette année est le transfert de Qt à Digia. Comme vous avez pu le remarquer sur l'affiche, le nom de Nokia n'apparait pas. En effet, après un moment d'incertitude sur la préparation de l'événement, c'est KDAB et ICS qui ont repris le flambeau de l'organisation, Digia s'étant joint à eux plus tardivement. Ce sera donc aussi l'occasion de découvrir en live les plans de Digia pour le futur du framework.

Finalement, les bénéfices et contraintes de l'open governance seront certainement au cœur des discussions, une année après le changement de politique.

I-C - Les éditions précédentes

Vous pouvez retrouver les reportages de Developpez.com des années précédentes en suivant les liens : 2009, 2010, 2011, ainsi que les vidéos de l'événement.

Les vidéos des sessions des années précédentes sont aussi disponibles sur le site du Qt Project.

II - Programme de formations

Comme chaque année, la première journée des Qt DevDays sera réservée à l'enseignement d‘aspects bien spécifiques de Qt aux développeurs.

Tout logiquement, ce sont des extraits des formations que KDAB fournit habituellement.

Cette année, neuf thèmes sont proposés :

- introduction à Qt pour les PC ;

- introduction à Qt Quick ;

- introduction à Qt pour les plateformes embarquées ;

- introduction à Squish pour tester son application Qt ;

- la programmation modèle/vue dans Qt ;

- le multithreading dans Qt ;

- la programmation OpenGL moderne dans Qt 5 ;

- les nouveautés du C++11 (focalisé à Qt 5) ;

- rentrer dans le rythme avec Git.

II-A - Introduction à Qt pour les PC

Cette séance vous introduit au monde des widgets Qt. Cette session est appropriée si vous envisagez de développer des applications de bureau avec Qt (ou si vous l'avez déjà fait, mais que vous souhaitez aller dans la bonne direction).

La séance explorera les sujets suivants :

- la gestion des dispositions ;

- la communication interobjets avec les signaux/slots ;

- le système événementiel de Qt ;

- le rendu 2D.

II-B - Introduction à Qt Quick

Cette séance est une introduction à Qt Quick. D'une part, on vous apprendra comment créer des interfaces fluides à l'aide d'habiles animations avec le langage QML. De l'autre, on vous apprendra aussi à assembler les éléments QML à la logique de votre programme C++.

Connaître les bases de Qt d'un point de vue C++ est un avantage mais pas une nécessité.

II-C - Introduction à Qt pour les plateformes embarquées

Cette séance se destine aux personnes qui s'intéressent au développement d'applications Qt embarquées.

Pour cela, la session présente Qt et Qt Quick et s'intéressera à la configuration et la chaine d'outils pour développer des applications Qt et Qt Quick pour Linux embarqué.

De plus, une présentation de QPA (l'abstraction de plateforme de Qt) et d'une personnalisation de Qt pour les systèmes embarqués sera donnée.

II-D - Introduction à Squish pour tester une application Qt

Les tests unitaires vous entraineront très loin lorsqu'une interface est impliquée. Si vous souhaitez être sûr que la globalité du système fonctionne, alors vous avez aussi besoin d'un test de boite noire. L'outil pour automatiser cela dans le monde de Qt est Squish.

Squish est un outil enregistreur et joueur qui peut être utilisé comme tel, mais pour obtenir le maximum une approche plus structurée est suggérée. Cette session présentera Squish et l'approche de refactoring que KDAB a implémentée dans de grandes entreprises.

La connaissance des bases de Qt et du développement d'un logiciel est un plus pour cette présentation ; toutefois, les testeurs et les gestionnaires qui s'intéressent à l'automatisation des tests seront bénéficiaires.

II-E - La programmation modèle/vue dans Qt

Un ingrédient-clé d'un développement de logiciel réussi est la séparation de la présentation et de la logique, tout le monde le sait. Une grande partie des applications est une liste de choses et celles de Qt offrent une telle séparation grâce au framework modèle/vue.

Cette séance présentera ce framework et expliquera comment développer un modèle indépendant de ce qui est affiché dans une application Qt C++ ou dans une application Qt Quick.

Cette session se penchera sur les sujets :

- l'API à implémenter pour une utilisation dans une liste 1D, une table 2D et une vue en arbre ;

- ce que sont les index du modèle ;

- comment réussir l'implémentation d'un proxy ;

- comment déboguer vos modèles ;

- comment implémenter les modèles en C++ et les afficher avec Qt Quick.

II-F - Le multithreading dans Qt

Avec l'augmentation du nombre de cœurs dans les ordinateurs, la programmation multithread est devenue une chose importante pour les développeurs. Qt offre plusieurs mécanismes pour le multithreading, bien que ce soit à vous de décider lequel utiliser et vous éloigner des pièges communs.

Cette session présentera les concepts du multithreading en général, expliquera les différents mécanismes de Qt et discutera des meilleures pratiques et des pièges à éviter.

Il est nécessaire de connaître les bases de Qt pour cette session.

II-G - La programmation OpenGL moderne dans Qt 5

OpenGL est au centre de Qt Quick 2 dans Qt 5 et joue un rôle essentiel dans l'affichage de contenu dans de nombreuses applications basées sur les widgets.

OpenGL est présent depuis de nombreuses années et, depuis peu, s'est mis à évoluer pour s'écarter de son héritage et mieux exploiter le matériel. OpenGL moderne permet d'utiliser la pleine puissance des GPU et leurs capacités de calcul parallèle. L'optimisation du rendu OpenGL nécessite de comprendre le fonctionnement des GPU et la manière dont ils affichent leurs données.

Qt fournit des classes pour se faciliter la vie lors de l'utilisation d'OpenGL. Cette session vous montrera comment réaliser les bases d'un rendu OpenGL et s'intéressera à l'utilisation conjointe de Qt et d'OpenGL pour implémenter de nombreux algorithmes et effets graphiques. Vous apprendrez comment créer des éléments Qt Quick 2 utilisant les API du graphe de scène et d'OpenGL.

Une base d'algèbre linéaire est supposée pour suivre cette session (multiplication d'une matrice et d'un vecteur). Les mathématiques seront réduites au strict minimum !

II-H - Les nouveautés du C++11 (focalisé à Qt 5)

Cette session vise les gens intéressés par l'association des nouvelles fonctionnalités du C++11 avec Qt 5 (et, d'une moindre manière, Qt 4.8). Vous y apprendrez tout des nouvelles fonctionnalités de C++11 ; cette session vous donnera aussi des informations spécifiques à Qt, dont la façon de structurer votre code avec un compilateur C++11 pour rendre vos applications plus rapides et plus légères en mémoire.

Il est nécessaire de connaître les bases du C++ (l'ancien standard), bien que des sujets avancés seront expliqués si besoin. Connaitre les bases de Qt est bénéfique, mais pas une nécessité.

II-I - Rentrer dans le rythme avec Git

Le système de contrôle de versions Git possède de clairs avantages par rapport à un système comme Subversion. D'un autre côté, il possède le désavantage d'être compliqué à utiliser, du moins au début.

Il y a quelques années, un créneau a été ajouté aux sessions sur Qt, afin de se pencher sur Git. Évidemment, Git n'a que peu de liens directs avec Qt lui-même, mais l'idée était qu'il était appréciable d'aider les gens à s'habituer rapidement avec une pièce importante du développement logiciel.

Cette session commencera à partir de zéro et à travers la théorie et la pratique vous apprendrez tout de Git.

Après, Gerrit, pièce-clé à connaître si vous souhaitez contribuer à Qt, sera l'objet des discussions.

II-J - Nouvelles de dernière minute

Une semaine avant les Qt DevDays, KDAB a envoyé un courriel à tous les participants afin d'indiquer que les sessions « Le multithreading avec Qt » et « Rentrer dans le rythme avec Git » ont été annulées par KDAB à cause du manque de salle pour accueillir les formations.

III - Conférences

III-A - Généralités

III-A-1 - Keynote : « Qt - En route pour le futur »

Keynote : « Qt - Gearing up for the Future », par Tommi Laitinen, SVP International Products, Digia

Tommi Laitnen partagera la vision de Digia sur le futur de Qt et comment l'entreprise compte développer le framework. Tommi parlera aussi de l'état actuel de Qt 5 et précisera comment cette version majeure changera le monde du développement de logiciels et permettra la réalisation de produits avancés, beaux et performants. La keynote se terminera par un aperçu sur la manière de consolider Qt à travers la collaboration avec la communauté et sur le rôle actuel et futur du Qt Project.

III-A-2 - Keynote: Qt 5 Roadmap

Keynote: Qt 5 Roadmap, par Lars Knoll

Informations non disponibles.

III-A-3 - Le projet derrière Qt

The project that brings you Qt, par Thiago Macieira, Intel

En 2011, le Qt Project est né afin de conduire le développement du projet : un vrai projet Open Source avec un modèle de gouvernement ouvert. Au cours de 2012, le projet a montré que cela a été une bonne chose notamment dans sa survie face aux changements et la publication de multiples patchs pour Qt 4.8 ainsi d'alphas et bêtas pour Qt 5.0. Cela a été possible grâce au dévouement de sa communauté et grâce à la structure mise en place plus tôt dans l'année, malgré les craintes de nombreux utilisateurs de Qt. Cette session présentera l'organisation du Qt Project, montrant comment un développeur peut approcher la communauté avec ses idées et ses contributions. En réalité, cette session essaiera de vous convaincre que vous faites déjà partie du Qt Project.

III-A-4 - Le partenariat Qt

The Qt partnership program, par Kristen Tveter, Digia

En tant que nouveau propriétaire, Digia aimerait travailler avec l'écosystème pour mieux répondre aux utilisateurs de Qt et agrandir la communauté. En prenant le relais après Nokia, Digia met en place un nouveau partenariat et invite tous les partenaires Qt de Nokia et tous les autres membres de l'écosystème à se joindre. La présentation dévoilera les plans de Digia à propos de ce partenariat et des avantages à rejoindre le programme.

III-B - Embarqué

III-B-1 - Le futur de Qt sur Linux embarqué

The Future of Qt on Embedded Linux, par Lars Knoll, Digia

Informations non disponibles.

III-B-2 - Qt sur Raspberry Pi

Qt on Raspberry Pi, par Jeff Tranter, ICS

Cette séance présente le Raspberry Pi, une plateforme de calcul à faible coût. On y verra comment la plateforme peut être un environnement de développement et donnera le statut actuel de Qt 4 et Qt 5 pour Raspberry Pi.

On commencera par un aperçu de ce qu'est Raspberry Pi, la fondation sans profit derrière ce projet ; on donnera une description du matériel et des logiciels de la plateforme.

Ensuite, on étudiera le portage de Qt sur le Raspberry Pi, notamment la distribution Linux QtonPi et les pilotes. On regardera l'état actuel du support des versions 4 et 5 de Qt pour le Raspberry Pi.

III-B-3 - Comment utiliser Necessitas pour créer des applications Android

How to use Necessitas to create Android apps, par BogDan Vatra, Necessitas Project

Informations non disponibles.

III-B-4 - Porter Qt 5 sur des plateformes embarquées

Porting Qt 5 to embedded hardware, par Thomas Senyk, Pelagicore

Cette présentation donne un bref aperçu des étapes nécessaires pour exécuter Qt 5 sur du matériel embarqué.

On parlera plus particulièrement de Linux embarqué, mais les concepts généraux peuvent s'appliquer à tout autre système.

La présentation portera sur les outils de configuration, expliquant comment mettre en place un système de fichiers racine et un environnement sysroot et présentera aussi la compilation croisée avec les mkspecs correspondants.

La seconde partie portera sur les plug-ins QPA tels que l'accélération matérielle avec OpenGL.

III-C - Réseau/cloud

III-C-1 - Qt et les API Google

Qt and the Google APIs, ICS

Informations non disponibles.

III-C-2 - Qt et les services de Cloud

Qt and Cloud Services, par Sami Makkonen, Digia

Cette présentation pointera les différents services de Cloud et les possibilités de l'utilisation de ressources du Cloud du point de vue des applications Qt. Ce framework possède beaucoup de fonctionnalités pour utiliser un stockage dans le nuage. Depuis les récents ajouts dans son code source, il est encore plus facile d'utiliser les API d'interaction avec les nuages basés sur REST. Un des éléments-clés pour le futur est de réfléchir sur la façon de rendre l'accès au nuage encore plus simple pour les développeurs de Qt d'un point de vue de l'API et des outils. La présentation montrera les premiers résultats d'un projet de recherche de création d'API pour accéder aux services des différents fournisseurs (tels que Amazon AWS et Microsoft Azure). La présentation comportera aussi une présentation des back-ends comme concept de service permettant une création facile de back-ends d'application avec la possibilité de créer des schémas de données dynamiques, des utilisateurs et des gestions de droits.

III-C-3 - Quoi de neuf dans QtWebKit de Qt 5.0

What's New in QtWebKit in 5.0, par Simon Hausmann, Digia

Informations non disponibles.

III-C-4 - Qt et les services Web

Qt and Web Services, par Dr. Tim Dewhirst, KDAB

L'interfaçage avec les services Web devient courant dans le développement : recherche d'informations sur AWS, connexion à un service de musique en ligne, consulter la météo ou intégrer Facebook ou Twitter.

De plus en plus de développement d'applications est effectué comme sous partie d'un système plus important.

Cette présentation couvrira les différents types de services Web (XML-RPC, SOAP, RESTful), l'authentification (OAUTH, XAUTH), expliquera pourquoi les standards sont bons et comment utiliser Qt pour l'interfacer aux services Web par le biais d'exemples.

III-C-5 - Utiliser correctement SSL avec Qt

Using SSL the right way with Qt, par Richard J. Moore, Westpoint Ltd and KDE

Qt fournit un support de TLS/SSL avec la classe QSslSocket et le support de HTTPS avec QNetworkAccessManager. Malheureusement, SSL est complexe et, bien que Qt soit capable d'en cacher un peu les détails, l'utilisation de ces classes oblige les développeurs à prendre des précautions, particulièrement lors de la gestion des nombreux types d'erreurs possibles. Cette présentation a pour objectif de montrer comment vous pouvez gérer les différentes classes d'erreurs correctement, des erreurs de validation des certificats en passant par les retours aux anciennes versions de SSL lorsque la connexion aux serveurs est boguée comme cela peut arriver avec les accélérateurs SSL.

III-C-6 - Distribuer des applications QML par le réseau

Serving QML applications over the network, par Jeremy Lainé, Wifirst

Le support transparent du réseau avec Qt Quick facilite la création d'interfaces utilisateurs et de leur logique tout en reposant sur le réseau. Cela permet aux développeurs d'applications d'adopter le style de publication rapide du web, mais, aussi, cela requiert une préparation préalable. La présentation soulignera les bénéfices de desservir une application QML par le réseau, donnera un aperçu de la transparence du réseau avec le QML et illustrera la façon de construire et de desservir les applications QML. La présentation montrera aussi quelques challenges rencontrés dans le vrai monde du déploiement d'applications.

III-C-7 - Plug-in QML Social Connect

Social Connect QML Plug-in, par Andrea Grandi

Social Connect implémente un plug-in QML qui délivre une interface pour les développeurs Qt Quick afin d'accéder aux API de Facebook, Twitter et Instagram permettant la création de contenu généré par des applications mobiles.

La première partie de l'exposé présentera la bibliothèque, son utilité, son utilisation, etc. La seconde partie portera sur son extension en écrivant de nouveaux plug-ins pour supporter plus de services.

Plus d'informations sur ce projet sont disponibles sur le site officiel.

III-D - En profondeur

III-D-1 - Qt Core en détail

Qt Core in Depth, par Olivier Goffart, Woboq

Le but de cette présentation est de familiariser les développeurs Qt avec le fonctionnement de la bibliothèque au cœur de Qt. Elle portera donc sur son fonctionnement interne, avec des sujets tels que l'implémentation des conteneurs, le système de métatypes, la classe QObject avec les signaux et slots, la boucle événementielle ainsi que le mécanisme de traitement des événements. La session couvrira Qt 4 et les changements apportés par Qt 5.

III-D-2 - Utiliser C++11 pour accélérer vos programmes Qt 5

Using C++11 to speed up your Qt 5 programs, par Marc Mutz, KDAB

Qt 5 arrive avec un meilleur support de C++11. Cette présentation vous apprendra des techniques pour rendre vos applications plus légères en mémoire et plus rapides lorsqu'elles sont compilées avec un compilateur C++11. Une attention particulière portera sur les techniques qui ne cassent pas la compatibilité avec les compilateurs C++98. Après avoir donné un aperçu de l'état actuel du support C++11 dans Qt 5.0, la présentation se penchera sur ce que nous espérons dans Qt 5.1.

III-D-3 - Créer des interfaces utilisateur Mac avec Qt

Creating Mac GUIs with Qt, par James Turner, KDAB

Cette présentation dévoile quelques astuces, outils et techniques permettant de convertir les interfaces utilisateur génériques en interface native Mac. Ainsi, les utilisateurs Mac arrêteront de se plaindre que votre application « ne va pas ». Brièvement, nous discuterons de l'évolution de Qt 5, notamment des Qt Quick Desktop Widgets. La plus grande partie de la présentation se concentrera sur les astuces telles que la barre d'outils unifiée, la personnalisation des polices et de leurs tailles ainsi que les boutons groupés. Des discussions porteront sur l'intégration dans l'espace (dont les espaces plein écran) et le travail potentiel sur la gestion des documents.

III-D-4 - QMetaType et QmetaObject en détail

In Depth - QMetaType and QmetaObject, par Stephen Kelly, KDAB

Une des pierres angulaires de Qt est le système de communication entre les instances d'objets dans une relation plusieurs à plusieurs. Le système de signaux et slots est connu par tous les utilisateurs de Qt et peut être utilisé pour indiquer lorsque quelque chose se produit dans une interface, sur le réseau ou dans un autre sous-système. Les données peuvent être transférées avec ces connexions pour créer un réseau riche d'objets tout en suivant le patron observateur.

Le système de Qt dépend d'un générateur de code pour créer des connexions valides entre les objets, mais ce même générateur de code fournit aussi des fonctionnalités comme l'introspection et la construction dynamique d'instances. En parallèle, Qt fournit une classe pour stocker une instance de n'importe quel type, QVariant, et un système pour enregistrer des types définis par l'utilisateur, le système QMetaType. Ces fonctionnalités ne dépendent pas d'un générateur de code externe, mais reposent sur le préprocesseur, la spécialisation de templates et les unions C++.

La présentation débutera par un résumé des fonctionnalités et des cas d'usages et parlera des détails d'implémentation de ces pierres angulaires dans Qt. Les possibilités et les améliorations en relation avec ces fonctionnalités apportées par le C++11 seront aussi montrées.

III-D-5 - De bonnes intentions, sans garantie : utiliser Qt de façon inattendue

Intentions good, warranty void: Using Qt in unexpected ways, par Till Adam, KDAB et Mirko Boehm, Agile Workers

Qt est livré avec plusieurs frameworks puissants, des implémentations de patrons de conceptions, des meilleures pratiques et des paradigmes d'API. Souvent, cela correspond très bien aux besoins des utilisateurs mais, quelquefois, il arrive qu'il soit plus intéressant de les utiliser différemment que ce pour quoi ils ont été conçus. Cette présentation prendra des exemples tels que l'utilisation du framework modèle/vue de Qt comme sous-module d'un autre contexte MVC, l'utilisation d'un QThread comme contexte d'exécution pour les objets actifs au lieu d'une simple classe de charge de travail, comment et quand utiliser boost::serialization ou les Protocol Buffers de Google avec la couche IO de Qt, comment abuser intelligemment du système de propriétés, etc.

III-E - Outils

III-E-1 - CMake et Qt

CMake with Qt, par Stephen Kelly, KDAB

CMake est un moteur de production multiplateforme grandement utilisé dans les projets C++ importants (par exemple, LLVM/Clang, KDE, MySql, SecondLife). Il peut être utilisé pour générer des fichiers de projet pour Visual Studio et Xcode ainsi que des fichiers Makefile spécifiques à certaines plateformes.

CMake permet à des tiers de gérer rapidement et d'utiliser n'importe quelle dépendance du projet. L'outil fournit plusieurs points d'intégration pour qu'il soit facile d'utiliser Qt du point de vue de l'édition de liens, des inclusions, du moc et des fichiers ui.

Cette présentation montrera comment CMake peut être utilisé pour construire des projets Qt, quelles sont les différences avec qmake et discutera des fonctionnalités supplémentaires à venir qui rendent la compilation avec Qt 4 et 5 plus facile.

III-E-2 - Déboguer des programmes Qt multithread

Debugging multithreaded Qt programs, par David Faure, KDAB

Écrire du code multithread, c'est facile… le faire mal encore plus ! Cette présentation montrera les erreurs classiques dans les programmes multithreads écrits avec Qt, le débogage des conditions de course et les interblocages en utilisant Qt, gdb et l'outil « helgrind » fourni par valgrind. Finalement une solution pour tester le thread-safety d'une classe sera présentée.

III-E-3 - Qt Creator 101

Qt Creator 101, par Tobias Hunger, Digia

Qt Creator est un puissant environnement de développement intégré (EDI) multiplateforme, créé sur mesure pour le développement Qt en C++ mais aussi avec QML. Il intègre un constructeur d'interface utilisateur, un système d'aide et un puissant éditeur de code avec gestion des systèmes de versionnage et le support des systèmes de compilation les plus populaires. Il simplifie le développement multiplateforme, que ce soit pour les applications bureau, les plateformes embarquées ou les systèmes mobiles.

Cette présentation fournira une courte introduction à Qt Creator, une démonstration d'une compilation pour différentes plateformes dans l'EDI et surlignera les nouvelles fonctionnalités de Qt Creator 2.6.

III-E-4 - Débogueurs spécifiques au domaine

Domain Specific Debugging Tools, par Volker Krause, KDAB

Utiliser (ou créer) des frameworks de plus en plus abstraits permet d'implémenter des tâches complètes rapidement et efficacement. Par contre, le débogage de code en utilisant de tels frameworks avec des débogueurs traditionnels, qui travaillent au niveau de l'instruction, peut devenir embarrassant et être une source de confusion à cause des détails d'implémentation du framework. Les outils de débogage spécifiques au domaine d'utilisation peuvent comprendre l'abstraction et aider à la garder succincte.

Le débogage d'un QAbstractItemModel avec GDB ou en suivant la chaîne d'événements dans une application en utilisant les QIODevice asynchrones dénonce la vue trop bas niveau des débogueurs traditionnels. Face à cela, les développeurs se tournent vers d'autres approches, telles que l'utilisation du printf. Bien que simple et efficace, cela nécessite la modification du code et la recompilation. Pire, il faut le faire à chaque fois. À la place, les débogueurs spécifiques au domaine permettent aux développeurs d'éviter l'instrumentation manuelle tout en fournissant des méthodes puissantes pour la visualisation et l'analyse.

Cette présentation parlera des outils de débogage haut niveau déjà existants pour Qt, en commençant par la simple introspection de QObject à la surveillance des machines à états et des communications interprocessus. Plus important, nous regarderons les façons de créer des outils de débogage pour vos propres applications basées sur Qt ou sur d'autres frameworks.

III-F - Middleware

III-F-1 - Pourquoi vous devez être impatient pour Qt 5

Why you should be excited by Qt 5, par Thiago Macieira, Intel

Vous savez que Qt 5 va bientôt sortir et vous vous rappelez toujours du travail qu'il a fallu pour passer de Qt 3 à Qt 4. Vous avez entendu de bonnes choses à propos de Qt 5, mais vous n'êtes pas certain d'être intéressé ? La transition vers Qt 5 n'est pas comme celle vers Qt 4. Architecturé et développé avec l'objectif précis de garder la plus grande compatibilité par rapport aux sources et aux comportements, les premiers testeurs ont rapporté que la transition est sans douleur. De plus, Qt 5 apporte de multiples corrections et améliorations qui ne pouvaient être effectuées auparavant. Il apporte de nouvelles fonctionnalités sur la table, définissant le niveau pour les cinq prochaines années à venir et même plus.

III-F-2 - Accéder aux middlewares à partir de Qt, QML ou HTML5

Accessing middleware from Qt, QML or HTML5, par Dr. Eva Brucherseifer, Basyskom

Dans la plupart des applications industrielles ayant des interfaces embarquées, il est nécessaire d'accéder à des middlewares personnalisés. Généralement, l'équipe s'occupant des fonctionnalités du middleware n'est pas la même que celle qui développe l'interface utilisateur. Afin d'intégrer les deux parties, une bonne architecture et API sont requises, dans l'objectif de faire fonctionner les deux modules ensemble sans peine et d'être flexible pour le futur.

Cette présentation discutera de la façon d'architecturer les accès au middleware et ce qu'il faut faire pour les différentes méthodes d'implémentation d'interfaces utilisateur dans Qt 5. Le middleware fournit des fonctionnalités à travers des API C ou C++ ou même à travers une communication interprocessus et réseau. Des exemples de widgets Qt, QML et Qt WebKit avec une interface HTML5 seront présentés, tirés de projets du monde réel.

III-F-3 - Applications Qt accessibles

Accessible Applications with Qt, par Frederik Gladhorn, Digia

Dans les temps modernes, l'accessibilité est devenue un facteur important dans le développement d'une application. Le framework d'accessibilité propose une représentation alternative à l'utilisateur des applications et Qt 5 porte une attention particulière aux détails, l'expérience a été améliorée sur les environnements de bureau en comparaison à Qt 4. Cette présentation offrira un aperçu des améliorations de Qt 5, des avertissements et des conseils afin d'être conscient d'offrir une expérience douce pour tous les utilisateurs. Un rapide aperçu des outils pour tester vos applications est donné. Les applications basées sur QWidget ainsi que les applications Qt Quick seront considérées.

III-F-4 - Le problème des middlewares : une histoire d'abstraction

The middleware problem: a tale of abstraction, par Dario Freddi, Ispirata et KDE

Qt possède une longue histoire de succès et d'échecs lors de l'interaction avec les middlewares, tels que Phonon, Qt Multimedia, Qt Mobility et d'autres. L'histoire d'un middleware tourne uniquement autour de l'abstraction : pouvons-nous réellement trouver la panacée qui correspond à nos besoins avec une seule API ou devons-nous admettre l'évidence que programmer une seule fois et déployer partout n'est vrai qu'en appliquant quelques contraintes ?

Cette présentation tourne autour du passé, du présent et du futur du sujet pour les communautés de Qt et de KDE. KDE résout une partie de ce problème en utilisant une architecture à deux couches pour correspondre aux besoins de tous les développeurs.

En réalité, lorsque la plupart des développeurs n'ont besoin que d'une petite sous-partie des fonctionnalités offertes par la plateforme, il est aussi vrai que quelques applications plus complexes devraient être supportées sans avoir recours à des solutions qui sortent de « l'écosystème de Qt ». Quelques solutions de KDE, telles que Solid et Kauth, utilisent un mécanise de « lien et abstraction » pour fournir une API générique et utilisable pour les besoins de la plupart des développeurs. Une interface complète Qt est toujours présente pour chaque fonctionnalité exposée par la plateforme du choix des développeurs qui ont besoin d'aller plus loin.

Vous allez voir ce qui a été fait et ce qui est prévu de faire tout en parlant des difficultés trouvées (passées et présentes). Heureusement, ces idées vous aideront dans la conception de votre prochain composant middleware pour Qt ou pour choisir celui qui vous correspond le mieux.

III-F-5 - Créer des compositeurs de fenêtre avec le module Qt Wayland

Creating Window Compositors with the Qt Wayland module, par Andy Nichols, Digia

Le système de gestion des fenêtres pour les plateformes embarquées (QWS) a été supprimé dans Qt 5 et ses fonctionnalités ont été remplacées par le module Qt Wayland. Cette présentation démontrera comment Qt Wayland fournit une méthode pour implémenter les compositeurs Wayland ainsi qu'une méthode pour exécuter les applications Qt 5 dans les compositeurs Wayland actuels.

La présentation explique aussi le processus pour écrire des compositeurs de fenêtre personnalisée en utilisant l'API QtCompositor et ce qui doit être fait pour que Qt Wayland fonctionne sur une nouvelle machine. En bonus, la présentation montrera comment tirer profit de Qt Quick 2.0 pour créer une expérience unique pour l'utilisation des environnements multiapplications Linux embarqué.

III-F-6 - Addons Qt pour tout le monde : KDE Frameworks 5

Qt addons for everyone: KDE Frameworks 5, par David Faure, KDAB

La version 5 des frameworks KDE approche et rendra le code créé pour les bibliothèques KDE disponibles pour tous les développeurs Qt. Quelques fonctionnalités ont été déplacées dans Qt 5 et le reste sera disponible dans des frameworks séparés, tout en ayant reçu un effort supplémentaire pour les rendre modulables et indépendants.

Cette présentation sera dirigée par les développeurs d'applications Qt, afin de leur montrer ce que les frameworks KDE peuvent apporter. On retrouvera le support du ZIP/TAR, la détection d'inactivité, le tracé, la détection matérielle, la transparence du réseau (VFS) ainsi que des widgets, des classes de modèle d'éléments et bien plus encore et tout cela en LGPL.

III-G - BlackBerry 10

III-G-1 - Développer avec Qt pour BlackBerry 10

Developing with Qt for the BlackBerry 10, par Vladimir Minenko, RIM

La présence de Qt sur le BlackBerry 10 a été le sujet d'une keynote par RIM aux Qt Developer Days 2011. Beaucoup de temps a passé depuis et aussi beaucoup de travail a été réalisé. Cette présentation vous donnera un aperçu des développements récents de Qt sur BlackBerry 10 et discutera des plans futurs. Dans cette session vous apprendrez aussi les aspects-clés de WNX comme base de toutes les applications natives sur la plateforme BlackBerry 10. Vous verrez en action les outils de développement pour le BlackBerry 10 et apprendrez comment les utiliser pour vos propres développements. RIM montrera comment ils ont collaboré avec Qt en interne et quelles parties nous utilisons dans BlackBerry 10.

III-G-2 - Connecter vos applications BB10 à Internet

Connecting your BB10 app to the network, par Peter Hartmann, RIM

Qt est un back-end de choix pour les applications BlackBerry 10. Cette présentation suppose que vous savez construire des interfaces utilisateurs fantaisistes avec Cascades ou simplement avec Qt et se penchera sur la façon de connecter votre application à Internet : récupérer des données à partir de Twitter ou Facebook sera l'un des points abordés mais aussi la réalisation de requêtes bas niveau (TCP ou UDP). Des sujets avancés tels que SSL seront aussi rapidement expliqués.

III-G-3 - Comment Qt a aidé RIM pour créer BlackBerry 10

How Qt Helped RIM Build BlackBerry 10, par Jeff Kehres, RIM

Qt est la base du développement natif en C++ sur BlackBerry 10. Venez apprendre plus sur le nouveau système d'exploitation mobile de RIM et comment Qt a été intégré. La présentation montrera ce qui a été emprunté, ce qui a été modifié et ce qui a été créé pour réaliser une plateforme complète. Au fur et à mesure un aperçu des nouvelles API introduites pour BlackBerry 10 sera fait. La session finira par une discussion sur la façon dont RIM peut mieux participer à la communauté Qt.

III-G-4 - BlackBerry 10 Cascades UI Framework : Un autre aperçu

BlackBerry 10 Cascades UI Framework : A Different Take, RIM

Informations non disponibles.

III-H - QML

III-H-1 - Composants de bureau pour QtQuick

Desktop Components for QtQuick, par Jens Bache-Wiig, Digia

Informations non disponibles.

III-H-2 - QML pour les applications desktop

QML for desktop apps, par Michael Wagner et Helmut Sedding

QML met en avant le design déclaratif des interfaces graphiques pour les applications. Malgré cela, l'utilisation de QML sur desktop est marginale. Il est probable que cela soit dû aux difficultés pour lier les structures de données Qt et gérer les comportements comme la sélection, le glisser/déposer et même effectuer certaines optimisations. Pourtant, QML a été utilisé dans une application desktop 3D, hautement interactive pour l'optimisation d'usine. Pour cela, plusieurs stratégies ont été développées afin de permettre des expériences QML riches et cohérentes sur le desktop. Celles-ci vous seront présentées.

III-H-3 - QML efficace : les meilleures pratiques de développement avec Qt Quick

Effective QML: Best practices for Developing with Qt Quick, par Adenilson Cavalvanti, ICS

Cette présentation montrera de nombreux sujets liés à Qt et Qt Quick, dont le QML pour les personnes qui souhaitent développer rapidement des GUI sur des périphériques ayant des écrans tactiles mais aussi pour desktop. Qt Quick fournit des éléments réutilisables pour répondre aux gestes et un langage déclaratif haut niveau pour définir des animations vives et fluides.

Comme avec toute nouvelle technologie, les développeurs et designers commencent la découverte des bonnes pratiques et astuces en QML. Avez-vous déjà été dans un projet (ou entendu parler d'un projet) utilisant cette technologie et qui ne va pas bien sur le matériel cible ? Avez-vous déjà entendu parler de QML comme uniquement bon pour du prototypage et pas pour l'application finale ? Qu'en est-il du développement pour bureau ? Est-il sensé d'utiliser QML pour cela ? Dois-je écrire mon application avec les QWidget, QGV ou GML ? Est-il possible de ne pas avoir de C++ du tout ?

Ce sont des questions communes entendues par les programmeurs et les designers dans les tranchées et un des objectifs de cette présentation est d'aider à y répondre.

III-H-4 - Sous le capot de Qt Quick

Qt Quick under the hood, par Thomas McGuire, KDAB

De nombreux développeurs savent comment utiliser Qt Quick mais ne savent pas comment il fonctionne en interne. Cette présentation apporte de la lumière sur les rouages de Qt Quick. Pour les contributeurs Qt, cela donne un aperçu global comme point de départ et les utilisateurs Qt vont apprendre quelle est la magie utilisée par leurs applications.

Plusieurs aspects de Qt Quick seront examinés : comment le chargement de fichier QML fonctionne, comment les liaisons de propriétés fonctionnent, comment les interactions C++/QML sont réalisées et plus encore.

III-H-5 - Coder en QML : les outils pour la performance et le débogage

QML Coding, Performance and Debugging: Usage of Tools, par Aurindam Jana, Digia

Avec Qt 5, Qt Quick est conseillé pour créer des interfaces modernes, fluides ainsi que des applications. Bien que Qt Quick soit facile à utiliser, il souffre du syndrome Pareto (règle des 80/20) et avoir son propre ensemble d'outils pour analyser et corriger est devenu une nécessité. La présentation montrera l'utilisation des divers outils Qt Quick. L'éditeur fournit une navigation dans le code, l'autocomplétion et la validation mais aussi l'aide contextuelle ainsi que d'autres fonctionnalités. Le profiler analyse l'application et fournit des statistiques de performances. Le débogueur peut être utilisé pour définir des points d'arrêt, avancer à travers le code et inspecter les variables. L'inspecteur aide avec l'inspection et la modification des objets QML et des propriétés. Les API Console peuvent être utilisées pour loguer des messages, des cheminements dans le code, asservir des expressions, afficher des listes d'appels, etc. La console fournit une méthode pour évaluer des expressions lorsque l'application est en train d'être déboguée. L'aperçu expérimental en live met à jour l'application à la volée au moment de la modification du code.

III-I - Graphismes

III-I-1 - Techniques OpenGL moderne basées sur les shaders

Modern Shader-based OpenGL Techniques, par Dr. Sean Harmer, KDAB

OpenGL moderne abandonne le vieux pipeline démodé contre un pipeline programmable utilisant les shaders et les buffer objects. Cela offre beaucoup plus de flexibilité aux développeurs et ouvre les portes à un grand nombre d'effets et de techniques tout en permettant d'énormes améliorations de performance.

Cette présentation vous enseignera le pipeline OpenGL moderne et vous montrera comment créer des applications basées sur les shaders OpenGL modernes avec Qt 5. Une démonstration d'une technique de rendu plus avancée que le modèle basique de l'ancien OpenGL sera effectuée. Voici quelques exemples que nous allons présenter en utilisant OpenGL 3.x ou 4.x :

- utilisation basique de shaders et de buffer object - « hello triangle » ;

- éclairage phong ;

- rendu cartoon (cell shading) ;

- ambient occlusion avec texture mapping ;

- réflexion et réfraction avec des cartes d'environnements ;

- géométries instanciées ;

- rendu fil de fer en une passe avec les geometry shaders ;

- tesselation basée sur le GPU ;

- effets post process.

III-I-2 - OpenGL et Qt 5

OpenGL with Qt 5, par Dr. Sean Harmer, KDAB

Qt 5 introduit un meilleur support OpenGL grâce à l'abstraction QPA/Lighthouse et cela à travers un nouvel ensemble de classes OpenGL partagées par Qt Quick 2 et Qt3D. OpenGL est aussi très utilisé pour les jeux et comme widget central de contenu pour les applications desktop. Avec l'arrivée de Qt Quick 2 il est maintenant facile d'écrire des interfaces utilisateur complètes exploitant la puissance d'OpenGL.

Cette présentation vous fera découvrir le support d'OpenGL dans Qt 5 et vous montrera comment l'utiliser dans divers scénarios.

Si le temps le permet, quelques goodies liés à OpenGL dans les futures versions de Qt 5 seront partagés.

III-J - Assurance qualité

III-J-1 - Analyse de code C++

C++ Code Coverage Analysis, Par Harri Porten, Froglogic

L'analyse du code est une partie importante - quelques fois obligatoire - du processus de développement. À la fin de l'analyse, le code non testé ou mort est affiché, ce qui aide à trouver les erreurs de programmation.

Cette présentation montrera rapidement aux participants les différents types d'analyse de code, que ce soit pour les fonctions, les lignes et les conditions. Les outils disponibles pour les programmeurs Qt seront listés et comparés selon leurs fonctionnalités et limitations lorsqu'ils sont utilisés avec du code Qt C++.

La partie principale de la présentation consistera en une démonstration live de Squish Coco, un outil spécialisé dans l'analyse de code sur Qt, disponible en version commerciale mais aussi dans une variante communautaire, gratuite. La démo démarrera par une instrumentation du code, des exécutions pour tester les performances et l'analyse des résultats dépendant de chaque exécution, les différences entre elles et les différences causées par les changements dans le code de l'application. L'utilisation conjointe avec QTestLib pour le test manuel comme automatique d'interface sera présentée. Pour se rapprocher du monde réel, Squish Coco sera utilisé pour effectuer les tests de l'interface de Qt et Qt Creator à l'intérieur du Qt Project.

III-J-2 - Automatisation des tests d'interfaces utilisateur Qt - 10 erreurs et solutions

Automating Qt GUI Tests - 10 Pitfalls And How To Avoid Them, par Reginald Stadlbauer, Froglogic

En général, les bénéfices des tests automatisés tels que la possibilité d'exécuter plus de tests en moins de temps s'appliquent aussi aux tests de l'interface. Cependant, l'automatisation des tests de l'interface pour les interfaces Qt complexes dans un environnement multiplateforme est une tâche difficile.

Dans cette présentation, le focus restera sur les sujets techniques de l'automatisation des tests des interfaces Qt, comme l'identification fiable d'objet ou la réutilisabilité et la maintenabilité du code de test mais se penchera aussi sur les problèmes d'organisation, tels que la gestion du grand nombre de résultats des tests.

Cette présentation est basée sur l'expérience acquise en travaillant avec des clients sur l'automatisation des tests d'interfaces Qt et en ayant différentes approches pour réussir à éviter les problèmes fréquents.

III-J-3 - Automatisation de tests d'applications Qt avec CMake, CDash et Squish par l'exemple Pre-Stack Pro

Automated testing of Qt applications using CMake, CDash and Squish by example of Pre-Stack Pro, par Alexander Neundorf, Fraunhofer

« Si cela n'est pas testé, cela ne marche pas ! » - bien que cela semble exagéré, il y a beaucoup de vérité dans cette phrase. Dans n'importe quel logiciel complexe, il est d'usage que les fonctionnalités qui ont fonctionné une fois soient cassées avec le temps.

Les tests automatisés et réguliers sont une arme puissante contre ce problème. Cela est particulièrement vrai pour Pre-Stack Pro, un logiciel commercial pour les superordinateurs calculant et traitant les données sismiques, aidant les géophysiciens dans leurs recherches pour trouver des puits de pétrole sous la mer.

Cette présentation montrera comment CMake, Cdash et Squish peuvent être utilisés pour configurer un processus de développement pratique dans une configuration de développement de logiciel commercial.

Bien que la présentation se base sur l'exemple concret de Pre-Stack Pro, la configuration présentée est applicable en général à n'importe quelle application Qt.

III-J-4 - Architecturer pour la stabilité

Designing for testability, par Bo Thorsen, Fionia

Cette présentation montrera comment créer une architecture basée sur Qt qui permettra d'effectuer des tests unitaires. Vous allez voir comment concevoir pour la testabilité et ce que cela signifie dans une application Qt. Vous allez aussi voir comment exécuter les tests uniques comme partie intégrante du processus de développement et comme tests de régression.

L'architecture logicielle et le processus de compilation seront au centre de la présentation afin de montrer comment le système fonctionne dans son ensemble. Cette présentation montrera du code Qt avec QTestLib et la compilation sera faite avec Qmake ou CMake dans QtCreator ou Visual Studio. Le concept est le même pour d'autres systèmes comme qbs, KDevelop ou Squish.

Les exemples proviennent tous de projets réels, donc vous allez voir en pratique l'utilisation des tests unitaires. Vous allez voir le compromis entre la masse de travail et la complétude de la suite de tests.

III-K - Qt au jour le jour

III-K-1 - Porter une application Qt Windows sur Mac

Porting an existing Qt Windows App to Mac, par Sven Bergner, Akademische Arbeitsgemeinschaft Verlag

Cette présentation montrera les expériences reçues en portant une application existante, basée sur Qt, de Windows à Mac OS X. À quel point cela peut être compliqué lorsque celle-ci utilise un mélange de code Qt, STL, MFC et WinAPI et qu'il faut la porter sur Mac OS X. Un aperçu des problèmes rencontrés lors du portage de l'application sera donné, ainsi que les solutions trouvées. L'ensemble du processus, de l'estimation des coûts à la sélection du système de compilation pour mettre l'application sur l'AppStore sera décrit.

La présentation se tiendra en collaboration avec KDAB, fournisseur des services pour ce projet, aidant à porter l'application sur Mac OS X était KDAB Berlin.

III-K-2 - Faire le bon choix de licence lors d'un développement avec Qt

Making the correct license choice when developing with Qt, par Mika Päsi, Digia

Informations non disponibles.

IV - Remerciements

Merci à dourouc05 pour ses nombreuses relectures, ainsi qu'à ClaudeLELOUP pour les corrections orthographiques.