Projet

Général

Profil

QPainter et QGraphics

Pour dessiner en utilisant QtCreator deux solutions :

  • Le système des QPainter : on déclare un « peintre », on lui fait dessiner des objets géométriques, du texte, des images.
    On peut lui spécifier des couleurs de remplissage (QBrush) ou des crayons (QPen)
    Il y a cependant quelque chose qui n'est pas très clair pour moi : c'est la réécriture dans les QWidgets d'une fonction paintEvent, qui n'est jamais appelée dans les constructeurs ni le « main », et qui prend en paramètre un event qui... ben... je ne sais pas !
  • Le système des QGraphicsEtc... : a mes préférences à priori pour trois raisons : c'est ce que Fahim a utilisé, c'est quelque chose qui est apparu dans des versions plus tardives, et donc probablement pour pallier à des manques de l'ancien système, l'interface de QtCreator permet d'ajouter par glisser-déposer des QGraphicsView.

Dans le "form" créé par QtCreator, et dans lequel on peut par glisser-déposer ajouter toute sorte de QWidget (boutons, lignes de saisie, listes déroulantes, etc...), on peut aussi trouver dans la section "Display Widgets" un "Graphics View" à ajouter (je suis désolé, pas moyen pour l'instant d'avoir Qt en français, si quelqu'un veut rajouter à chaque fois à côté la traduction des noms d'objets ou de menus tels qu'ils sont dans Qt en français...).
Quand on a mis dans le .ui un QGraphicsView, on va pouvoir dessiner dedans.
La raison d'être d'un QGraphicsView est d'afficher ce que contient une QGraphicsScene; On crée une scène, on ajoute des objets dedans, puis on ajoute la scène à la vue et on fait afficher la vue.

Petit exemple dans l'archive jointe

Remarque : pas géré la vue de la scène a l'air de se centrer au milieu de celle-ci, et donc mon rond qui devrait être au milieu en position(0,0) n'y est pas. A retravailler...

Affichage simple d'image

Les QPushbutton et les Qlabel permettent d'insérer des icons pour les premiers, QPixmaps pour les seconds.
L'option "flat" pour les Qpushbutton permet de mettre le bouton à plat.

dessinerQGraphicsView.tar.gz (551 ko) Philippe, 30/06/2010 15:33

Redmine Appliance - Powered by TurnKey Linux