IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Le contenu de Qt4 > QtGui > Graphics View
        Qu'est-ce que Graphics View ?
        Comment accélérer Graphics View ?



Qu'est-ce que Graphics View ?
auteur : Benjamin Poulain
Graphics View est une infrastructure qui permet de dessiner des scènes 2D complexes.

Graphics View permet de:
  • dessiner des éléments en 2D
  • faire interagir l'utilisateur avec ces éléments
  • d'appliquer des transformations avancées sur les éléments
  • d'animer les éléments
Voici un exemple minimaliste pour montrer quelques possibilités de Graphics View.
L'exemple insère une boîte de dialogue dans la scène, et la déforme:

#include <QApplication >
#include <QGraphicsScene>
#include <QGraphicsProxyWidget>
#include <QGraphicsView>
#include <QFileDialog>
 
int main(int argc, char **argv)
{
   QApplication app(argc, argv);
   QGraphicsScene scene;
   QGraphicsView view(&scene);
 
   QFileDialog fileDialog;
   QGraphicsProxyWidget *item = scene.addWidget(&fileDialog);
   item->rotate(-15);
   item->shear(-0.5, 0);
 
   view.resize(800, 600);
   view.show();
   return app.exec();
}

Comment accélérer Graphics View ?
auteur : Benjamin Poulain
Si vous avez un problème de vitesse avec Grahics View, commencez par vérifiez que le problème de vitesse ne se situe pas dans un de vos items. Graphics View est extrêmement performant, il n'est pas inhabituel d'y dessiner plusieurs milliers d'éléments (essayez la demo "chip" par exemple). Les problèmes de vitesse sont généralement dû à un graphics item qui se dessine trop lentement, ou à des rafraichissements abusifs.

Si le problème ne vient pas de là, vous pouvez utiliser un backend plus performant pour dessiner. Dessiner avec les backends de la plateforme est assez lent, Qt contourne le problème en dessinant sur un format interne optimisé. Cela peut être configuré en ajoutant "-graphicssystem raster" ou "-graphicssystem opengl" (expérimental dans Qt 4.5) dans les options de l'application. Notez que l'option raster ne change rien pour Windows car c'est déjà le backend par défaut.
view.setViewport(new QGLWidget); 
Si cela n'est toujours pas suffisant, il vous faut optimiser précisément votre vue à l'aide des options de QGraphicsView. Une première option à considérer est renderHints. Cette option permet de configurer les paramètres du QPainter utilisé pour dessiner la scène. Si vous utilisez l'antiAliasing par exemple, cela ralenti le dessin des items.
view.setRenderHint(QPainter::Antialiasing, false);
view.setRenderHint(QPainter::TextAntialiasing, false);
Un autre paramètre utile est optimizationFlags. Cette propriété permet de changer les paramètres de bas niveau du dessin de la scène. Par exemple, concevoir les items pour pouvoir utiliser QGraphicsView::DontSavePainterState est important si les items sont très nombreux. À la différence des autres options, les paramètres de optimizationFlags impliquent des effets de bords sur le rendu de la scène. Ne changez ce paramètre que si vos items sont conçus en conséquence. Finalement, il existe le paramètre cacheMode pour accélérer le rendu du fond de la vue. Le cacheMode permet de demander à la vue de créer un cache pour l'image de fond. Cette option n'est utile que si le fond est long à dessiner, par exemple s'il s'agit d'une image, d'un dégradé ou si la transparence est utilisée.
view.setCacheMode(QGraphicsView::CacheBackground);


Consultez les autres F.A.Q's


Valid XHTML 1.1!Valid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni 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.