Projet

Général

Profil

AbulEduGraphicsEtiquetteV1

Cette classe fournit un QGraphicsItem composé d'une image de fond, d'une image, d'un texte et d'une petite icone appelée "marque".

Installation

L'installation de la classe AbulEduGraphicsEtiquetteV1 se fait dans le dossier lib de votre logiciel, par exemple

git submodule add http://redmine.abuledu.org/ryxeo/leterrier-developpeurs/abuledugraphicsetiquettev1.git src/lib/abuledugraphicsetiquettev1

Mainteneur de la lib:

git clone ssh://gitolite3@redmine.abuledu.org/repositories-redmine/ryxeo/leterrier-developpeurs/abuledugraphicsetiquettev1.git

Modification du fichier .pro

Pensez à modifier votre fichier .pro pour ajouter cette nouvelle lib

#AbulEduGraphicsEtiquetteV1
include(lib/abuledugraphicsetiquettev1/abuledugraphicsetiquettev1.pri)

Création d'une étiquette

Une "étiquette" est constituée
  • d'un QGraphicsPixmapItem qui représente le fond de l'étiquette,
  • d'un autre QGraphicsPixmapItem représentant l'image visible c'est un "enfant" du fond
  • d'un QGraphicsTextItem, lui aussi enfant du fond
  • et d'un dernier QGraphicsPixmapItem affichant par exemple une icone, enfant du fond comme les deux précédents.

Une étiquette se crée par exemple de la façon suivante :

        AbulEduGraphicsEtiquetteV1 *piece = new AbulEduGraphicsEtiquetteV1("chemin_vers_image_du_fond", taille);

On peut superposer une image :

piece->abeGraphicsEtiquetteSetImage("chemin_vers_mon_image", position, taille);

On ajoute du texte :

piece->abeGraphicsEtiquetteSetTexte("Mon_texte", position, largeurTexte);

Dans les deux lignes précédentes, la position est définie par rapport au point (0,0) du fond. La largeur du texte est un int représentant un nombre de pixels.

On ajoute une "marque" en faisant :

piece->abeGraphicsEtiquetteSetMarque(bool, "chemin_vers_la_marque");

Si bool == true la marque est visible, sinon elle est cachée.

La fonction suivante permet d'adapter les dimensions du fond au rectangle englobant l'image et le texte

piece->abeGraphicsEtiquetteAdapteFondToChildren();

Utilisation d'une étiquette

Une fois crée, il faut ajouter l'étiquette à une QGraphicsScene et éventuellement connecter les signaux émis par l'étiquette

        gv_AireDeJeu->scene()->addItem(piece);
        // On connecte les signaux (ancienne position de l'étiquette, position de la souris sur la scene.)
        connect(piece, SIGNAL(etiquetteMoved(QPointF, QPointF)), this, SLOT(etiquetteDeplacee(QPointF, QPointF)));
        connect(piece, SIGNAL(etiquetteClicDroitPressed()), this, SLOT(etiquetteClicDroitPressed()));
        connect(piece, SIGNAL(etiquetteClicDroitReleased()), this, SLOT(etiquetteClicDroitReleased()));
Une étiquette émet trois signaux :
  • etiquetteMoved(QPointF, QPointF) qui retourne la position de départ de l'étiquette ainsi que la position de la souris lors du lâché
  • etiquetteClicDroitPressed() qui est émis lors de l'appui sur le bouton droit sur l'étiquette
  • etiquetteClicDroitReleased() qui est émis lorsqu'on relâche le bouton droit de la souris

Il est possible de récupérer un pointeur sur les différents éléments de l'étiquette

  • piece->abeGraphicsEtiquetteGetImageItem(); // Retourne un pointeur vers la QGraphicsPixmapItem de l'image
  • piece->abeGraphicsEtiquetteGetMarqueItem(); // Retourne un pointeur vers la QGraphicsPixmapItem de la marque
  • piece->abeGraphicsEtiquetteGetTexteItem(); // Retourne un pointeur vers la QGraphicsTexteItem du texte

On peut donc faire subir tous les outrages aux différents Items de l'étiquette;-)

Le reste de la documentation est dans le .h :-D

Redmine Appliance - Powered by TurnKey Linux