Modèle de liste hétérogène en QML

On va montrer ici comment utiliser ListView pour afficher les données d’un modèle hétérogène. Le problème, ici, est que, en fonction du type de données, on aura un affichage différent, on utilisera donc différents délégués. Le truc est l’utilisation d’un délégué capable de détecter le type de données et ainsi adapter son affichage.

Modèle de liste hétérogène en QML

Un navigateur de fichiers basé sur une QListBox

Cet article présente FileBrowser, une sous-classe de QListBox grâce à laquelle l’utilisateur navigue dans ses répertoires et fichiers. Par rapport à QFileDialog, qui s’ouvre dans une fenêtre modale, le widget FileBrowser peut s’embarquer dans la fenêtre principale ou dans une boîte de dialogue d’une application, ce qui peut donner un avantage pour la navigation.

Un navigateur de fichiers basé sur une QListBox

Plusieurs ListView superposées en QML

Bien qu’il puisse sembler que l’utilisation de deux ListView soit assez courante, elle n’est pas documentée actuellement dans un exemple QML. Ces exemples QML ne considèrent qu’une ListView par écran, qui a les mêmes dimensions que cet écran et est flickable pour naviguer dans son contenu.. Au cas où on a besoin de plusieurs ListView l’une au-dessus de l’autre, cela devient plus délicat et le code doit être adapté.

Plusieurs ListView superposées en QML

What is Dart?, by Kathy Walrath, Seth Ladd (O’Reilly Media)

What is Dart?

Kathy Walrath and Seth Ladd, members of Google’s developer relations team, show in this essay why Google Dart is a language to be considered (in a near future) for all your Web applications: First of all, they answer why a new language is required, the most important question in this matter, what JavaScript is good for… and what it lacks. After that brief introduction, they move on to the real language (what it looks like, how you can use it, what libraries are already available – for example, Box2D, the physics engine behind the well-known mobile game Angry Bird -, where you can use it – and the idiosyncrasies of the server VM).

Lire la suite

Adieu qmake, bienvenue qbs !

Outil ô combien utile à tout développeur Qt… et pourtant ô combien détesté ! Il fonctionne bien, mais n’est pas la partie la plus maintenable de Qt. On a déjà exploré ce que tout remplaçant potentiel de qmake doit être à même de faire (et une liste de commentaires et questions à ce sujet). Notamment, toute une série d’outils actuellement disponibles ont été étudiés, aucun ne remplissait totalement ce cahier des charges (la discussion a bien continué pour Qt 5 sur la mailing list). C’est pourquoi un projet interne à l’équipe de développement de Qt a été lancé pour tester l’une ou l’autre idée, d’où un tout nouvel outil : la Qt Build Suite, qbs, à prononcer cubes.

C’est tout sauf qmake : pas de lien à la version de Qt, génération d’un graphe de compilation propre à partir de la description de haut niveau du projet, plus de génération de Makefile suivi d’un appel à make/nmake/gmake ou autre. En lieu et place, qbs agit comme un make parallèle, il appelle directement le compilateur, l’éditeur de liens et tout autre outil utile à la compilation du projet (à la manière de SCons ou Ant).

C’est un nouveau langage déclaratif : après QML, l’environnement Qt semble se mettre à la mode déclarative. En réalité, le langage utilisé par qbs est une version allégée de QML. Il fournit une représentation facile à utiliser pour l’EDI, tout en laissant la liberté d’écrire des expressions JavaScript. L’éditeur de fichier de projet devrait gérer lui-même toutes les listes de chaînes littérales et, pour les constructions plus compliquées, n’agir qu’en tant qu’éditeur de texte (ces expressions n’étant requises que si l’on a besoin de plus de puissance… et laissant alors littéralement tout faire, au vu de l’extensibilité). Par exemple :

Lire la suite

Utiliser un modèle de liste C++ en QML

La plupart des exemples QML actuels sont exclusivement écrits en QML et JavaScript, probablement pour les garder simples. Cependant, dans une application réelle, pour des raisons de performances, il est recommandé d’écrire autant de code que possible en C++ et de n’utiliser QML que pour l’interface utilisateur. Au final, il est important de savoir comment utiliser un modèle C++ en QML.

QML ne fournit de support direct que pour les modèles de liste pour le moment (comme QAbstractListModel, à cause des vues actuellement supportées (ListView, GridView…).

Le but de cet article est de montrer une manière facile d’utiliser un modèle de liste en C++ en QML au lieu d’un modèle QML comme ListModel.

Utiliser un modèle de liste C++ en QML

Apercevoir la troisième dimension ou l’utilisation multitheadée d’OpenGL avec Qt

Le module QGL de Qt facilite l’intégration de rendu OpenGL dans des applications Qt. Dans cet article, on va montrer comment créer un QGLContext personnalisé qui implémente des fonctionnalités spécifiques non proposées par QGL. On présentera également un exemple simple d’application multiplateforme et multithread avec Qt et OpenGL.

Apercevoir la troisième dimension

Partage de données explicite et implicite avec Qt

Le patron de conception du poids-mouche est souvent utilisé dans Qt. Un poids mouche (flyweight) est un objet qui minimise l’utilisation mémoire en partageant autant de données que possible avec d’autres objets similaires. Qt utilise de manière extensive ce patron mais y fait référence sous le nom de partage implicite.

Partage de données explicite et implicite avec Qt

Créer des applications avec un style Metro avec Qt, exemples en QML et C++

Comme déjà montré, les applications Qt Commercial en C++ et Qt Quick sont utilisables sans aucun problème ni modification sur la préversion pour développeurs de Windows 8. Ici, on montrera, avec plus de détails, comment des applications Qt peuvent adopter un style Metro. Les exemples seront des applications Qt normales dont le style aura été adapté pour ressembler à des applications Metro.

Créer des applications avec un style Metro avec Qt