forcément un remplaçant pour tous les emplois de la vue graphique : au contraire, il
lui manque un certain nombre de fonctionnalités, plus ou moins importantes selon
les cas d’utilisation.
La vue graphique distingue clairement la vue (QGraphicsView) de la scène
(QGraphicsScene) : une vue n’est qu’une manière de voir une scène (voir la
Section 2, Scènes, éléments et vues). On peut ainsi disposer d’un grand
nombre de vues d’une même scène, avec une très bonne performance.
Au contraire, avec Qt Quick, cette fonctionnalité (pas si souvent utile, voire
inutilisable dans bon nombre d’applications mobiles et embarquées) n’a pas
été répliquée : pour y arriver, il faut impérativement créer plusieurs scènes, à
garder synchronisées — ou alors utiliser Qt 3D (voir chapitre Affichage 3D
avec Qt 3D) et plusieurs caméras. Ce faisant, le code de rendu de Qt Quick a
pu être grandement simplifié et optimisé.
Les QGraphicsItem disposent d’une solution de détection de collisions
efficace, totalement absente de Qt Quick. C’est un réel handicap pour réaliser
des jeux, vu que ces algorithmes doivent être implémentés pour chaque
application — tout en faisant attention à la performance, souvent critique pour
des jeux mobiles. L’infrastructure nécessaire est cependant arrivée avec Qt 3D
(voir chapitre Affichage 3D avec Qt 3D).
Qt Quick ne dispose, pour le moment, que d’une seule forme de base : le
rectangle. Certes, il est très configurable (avec des bords arrondis, on peut
dessiner des cercles, des ellipses), mais le niveau de fonctionnalité est très
loin de celui proposé par la vue graphique et ses formes personnalisables à
l’infini.
On peut obtenir un résultat similaire avec le composant Canvas de Qt Quick
émulant l’API HTML5 du même nom (c’est-à-dire que le dessin est piloté en
JavaScript, avec les problèmes de performance qui l’accompagnent — voir le
chapitre Affichage 2D avec Canvas), mais sans réelle intégration à
l’environnement. On peut aussi créer ses propres composants Qt Quick en
Python, voire créer ses propres nœuds pour le rendu dans le graphe de scène
(ce qui apportera une performance maximale, mais avec un complexité
d'implémentation très élevée).
La vue graphique est entièrement pensée pour Python, il est très facile de créer
ses propres classes. Au contraire, l’interface Python de Qt Quick n’est pas
pensée pour l’extension : un très grand nombre de composants n’a qu’une
21
Précédent

- 22/494

Suivant