Orientation de l’écran en QML

Au lancement d’une application sur un périphérique mobile, il est souvent utile de détecter l’orientation de l’écran pour adapter la disposition visuelle. Malheureusement, QML n’est pas encore capable de détecter cette orientation lui-même. Cet article explique comment utiliser l’API de capteurs de QtMobility (Sensors) en QML.

Orientation de l’écran en QML

GDC 2012 et PhysX/APEX

Lors de la Game Developer Conference, il eut été dommage de se priver de quelques nouveautés côté PhysX. Non, les simulations physiques n’étaient pas en reste.

De la simulation de fourrure et de la destruction en temps réel

Ce personnage très laineux est fait de 840 000 particules, simulées comme 100 000 fils. Cette partie de la démo se base sur un solveur encore actuellement en recherche, bien que les résultats soient d’ores et déjà prometteurs.

Le module Destruction d’APEX sera aussi agrémenté d’un module de destruction en temps réel, puisqu’il n’utilise actuellement que des modèles préfracturés – gageons que les applications qui l’utiliseront auront des destructions beaucoup plus naturelles et immersives.

Lire la suite

Implémentation d’une table de hachage à référence faible avec Qt

Une table de hachage à référence faible contient des paires clé-valeur sans que l’on puisse les atteindre. On en recense quatre types :

  • la clé est une référence faible ;
  • la valeur est une référence faible ;
  • la clé ou la valeur est une référence faible ;
  • la clé et la valeur sont des références faibles.

Dans cet article, on propose une implémentation basée sur Qt pour le second type : une table de hachage où la valeur est une référence faible. Ceci signifie qu’une paire clé-valeur sera automatiquement enlevées de la table dès que la valeur ne sera plus utilisée dans le programme.

Ce type de structure est utile pour réduire l’utilisation mémoire en partageant les structures de données sans fuite de mémoire.

Implémentation d’une table de hachage à référence faible avec Qt

Qt Creator 2.5 est sorti en beta

Suite à la sortie de Qt Creator 2.5 en beta, il est grand temps de faire le tour de quelques nouveautés, sans toutes les passer en revue.

C++11

Publié en septembre dernier, le standard ISO C++11 se doit d’avoir un meilleur support dans l’EDI ; notamment, on trouvera les mots-clés nullptr, constexpr, static_assert, noexcept et auto, ainsi que les espaces de noms en ligne et les lambdas (partiellement).

De même, quelques nouvelles actions de refactorisation sont disponibles : insertion d’un #include pour les identifiants indéfinis, extraction de fonction, réarrangement de liste de paramètres, synchronisation des signatures (changer le nom d’un paramètre dans la déclaration répercutera la modification dans le corps).

Lire la suite

Thread travailleur avec Qt en utilisant les signaux et les slots

Qt fournit des classes de threads indépendantes de la plateforme, une manière thread-safe de poster des événements et des connexions entre signaux et slots entre les threads. La programmation multithreadée s’avantage des machines à plusieurs processeurs et est aussi utile pour effectuer les opérations chronophages sans geler l’interface utilisateur d’une application. Sans multithreading, tout est fait dans le thread principal.

Thread travailleur avec Qt en utilisant les signaux et les slots

Exposer des modèles C++ imbriqués à QML

Bien que ce cas d’imbrication puisse sembler rare en pratique, le fait que XML n’ait pas de support direct pour les modèles arborescents rend l’utilisation de modèles C++ imbriqués très utile pour obtenir une structure en arbre.

Un exemple de cas pratique où les modèles imbriqués sont utiles est le stockage de conversations Facebook. Un mur Facebook est constitué de notifications sociales (modèle racine), chacun pouvant avoir des commentaires (modèles internes).

Exposer des modèles C++ imbriqués à QML

Qt 4.4 introduit une nouvelle classe de gestion de disposition pour des formulaires à deux colonnes (les libellés sur la gauche et les champs d’édition sur la droite). Pour de tels formulaires, QFormLayout dispose de plusieurs avantages par rapport à QGridLayout, notamment le fait d’être multiplateforme et de disposer d’API pertinentes.

Cet article va montrer comment cette classe fonctionne.

Retour en forme avec QFormLayout

Support commercial de VxWorks

Suite à une collaboration entre Wind River (développeur de VxWorks, un système d’exploitation temps réel apparu en 1987 prévu pour l’embarqué) et Digia (qui, pour rappel, s’occupe du support commercial de Qt), les développeurs Qt pourront utiliser les plateformes VxWorks comme cible avec un support complet de la part de Digia.

Ceci signifie que les dernières versions de Qt seront testées et validées sur des plateformes VxWorks, avec des outils pour faciliter le développement. Ainsi, Qt sera plus accessible (on pourra même dire que les applications et GUI l’utilisant se fondront parfaitement dans le système) dans les secteurs privilégiant VxWorks (l’industrie, le médical, l’aérospatiale et le militaire), sur des plateformes sélectionnées (puces Intel, Freescale et Texas Instruments), avec support des standards graphiques OpenGL ES, OpenVG et EGL, pour VxWorks 6.9 et plus récents.

VxWorks était déjà supporté depuis Qt 4.6, mais uniquement par la communauté. Ici, il s’agit d’un support commercial complet (bien que rien ne soit précisé explicitement dans le communiqué en ce qui concerne la version open source de Qt : les changements au code y seront-ils reportés, comme pour les précédentes versions de Qt ?). Il sera disponible en version beta sur Qt Commercial 4.8.1.

Source : communiqué.

Optimisation avec QPixmapCache

Mettre à jour à répétition les pixmaps des widgets peut bloquer les programmes. Cet article montre comment améliorer la vitesse d’exécution des applications en mettant en cache les pixmaps obtenues en redessinant les widgets.

Cet article est la version Python de Optimisation avec QPixmapCache. Les exemples sont réalisés sous Python 3.2 avec PyQt 4.7.

Optimisation avec QPixmapCache