Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

Vous n'avez pas encore de compte Developpez.com ? L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Developpez.com

Qt

Choisissez la catégorie, puis la rubrique :

Viadeo Twitter Facebook Share on Google+   
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

Performances QML

Items opaques

Les Items cachés derrière un Item opaque entrainent un coût. Si un Item est entièrement caché par un Item opaque, mettez son opacité à 0. Un exemple courant est quand une page « détails » est affichée par-dessus une vue de l'application.

Clipping

clip est défini à false par défaut. Autorisez le clipping seulement si c'est nécessaire.

Ancres vs liens

Il est plus efficace d'utiliser les ancres (anchors) plutôt que les liens (binding) pour positionner relativement les objets les uns par rapport aux autres. Examinez cette utilisation des liens pour positionner rect2 relativement à rect1 :

 Rectangle {
     id: rect1
     x: 20
     width: 200; height: 200
 }
 Rectangle {
     id: rect2
     x: rect1.x
     y: rect1.y + rect1.height
     width: rect1.width - 20
     height: 200
 }

C'est accompli plus efficacement en utilisant les ancres :

 Rectangle {
     id: rect1
     x: 20
     width: 200; height: 200
 }
 Rectangle {
     id: rect2
     height: 200
     anchors.left: rect1.left
     anchors.top: rect1.bottom
     anchors.right: rect1.right
     anchors.rightMargin: 20
 }

Images

Les images consomment une grande partie de la mémoire et peuvent également être lourdes à charger. Pour traiter de grandes images efficacement, il est recommandé de définir la propriété Image::sourceSize avec une taille non supérieure à celle nécessaire au rendu. Attention car le changement de sourceSize va causer le rechargement de l'image.

Les images sur le système de fichier local sont habituellement chargées de façon synchrone. C'est le comportement généralement désiré pour les éléments de l'interface utilisateur. Cependant pour les grandes images qui ne doivent pas être forcément visibles immédiatement, définissez la propriété Image::asynchronous à true. L'image sera chargée dans un processus à basse priorité.

Délégués de vue

Les délégués doivent être créés rapidement quand la vue est affichée. Il y a deux aspects importants pour maintenir une vue agréable.

  • Petits délégués : gardez un minimum de code QML. Mettez juste assez de QML dans le délégué pour afficher l'information nécessaire. Toute fonctionnalité supplémentaire qui n'est nécessaire que lorsque le délégué est cliqué, par exemple, devrait être créée par un Loader au besoin.
  • Accès rapide aux données : assurez-vous que le modèle de données soit le plus rapide possible.

Images en ressource plutôt que composition

Si possible, fournir une ressource image unique, plutôt que d'utiliser la composition d'un certain nombre d'éléments. Par exemple, un cadre avec une ombre pourrait être créé à l'aide d'un Rectangle placé sur une Image qui dessine l'ombre. Il est plus efficace de fournir une image qui inclut le cadre et l'ombre.

Limitez le JavaScript

Évitez d'utiliser JavaScript pendant les animations. Par exemple, exécuter une expression JavaScript complexe pour chaque image de l'animation de la propriété x.

Rendu

Souvent, l'utilisation de différents systèmes graphiques donnera des performances supérieures au système graphique natif (c'est en particulier le cas de X11). Cela peut être configuré en utilisant QApplication::setGraphicsSystem() ou via la ligne de commande utilisant le commutateur -graphicssystem.

Vous pouvez activer l?accélération OpenGL en utilisant le système graphique opengl ou en définissant un QGLWidget en tant que zone d'affichage de votre QDeclarativeView.

Vous devrez essayer des options variées pour trouver ce qui fonctionne le mieux pour votre application. Pour le matériel embarqué basé sur X11, une combinaison recommandée est d'utiliser le système graphique natif avec un QGLWidget pour la zone d'affichage. Alors que cela ne garantit pas les meilleures performances dans tous les cas, cela offre de bonnes performances pour chaque cas. Au contraire, utiliser seulement le moteur de dessin natif devrait donner de bonnes performances pour quelques parties de votre application et de faibles performances ailleurs.

Le QML Viewer utilise le système graphique natif par défaut pour X11 et OS X. Il inclut également une ligne de commande -opengl qui définit un QGLWidget en tant que zone d'affichage de la vue. Sur OS X, un QGLWidget est toujours utilisé.

Remerciements

Merci à Emmanuel Di Clemente pour la traduction ainsi qu'à Dimitry Ernot, Jonathan Courtois et Claude Leloup pour leur relecture !

Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. Qt 4.7
Copyright © 2020 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vous avez déniché une erreur, une redirection cassée ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP !
Responsable bénévole de la rubrique Qt : Thibaut Cuvelier -

Partenaire : Hébergement Web