Projet

Général

Profil

AbulEduTeteV1

Cette classe fournit une QHBoxLayout permettant de présenter les têtes d'évaluation comportant chacune six états : Très bien, Bien, Moyen, Mal, Rien (absence de réponse à la question), Attente. Ces dénominations n'apparaissent pas à l'utilisateur!

Installation

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

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

Mainteneur de la lib:

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

Modification du fichier .pro

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

#AbulEduTeteV1
include(lib/abuledutetev1/abuledutetev1.pri)

Thèmes prêts à l'emploi

Vous pouvez télécharger et installer les thèmes prêts à l'emploi depuis https://redmine.ryxeo.com/projects/leterrier-developpeu/files (section abuledutetev1)

Utilisation

L'utilisation est simple, on appelle le constructeur avec les paramètres préfixe et nombre de têtes à afficher. Préfixe est à comprendre au sens de "prefix" dans les fichiers de ressources .qrc. Un petit exemple :

Création

Il y a maintenant deux possibilités de création : l'une produisant un QHLayoutBox, l'autre créant un QGraphicsWidget plus adapté aux QGraphicsView. Leurs fonctions membres publiques restent les mêmes !

  • Première possibilité : QHLayoutBox
        box = new AbulEduTeteV1("pingouin", 10, 64);
        ui->frametete->setLayout(box);
    

On crée une QHBoxLayout présentant dix têtes de pingouin dans l'état Neutre et dont la taille est de 64 pixels(ce dernier paramètre est facultatif 51 par défaut).

    box2 = new AbulEduGraphicsTetesWidgetV1("pingouin", 10, 64);
    ui->m_graphicsview->scene().addItem(box2);

On crée un QGraphicsWidget présentant dix têtes de pingouin dans l'état Neutre et dont la taille est de 64 pixels(ce dernier paramètre est facultatif 51 par défaut).

Modifier l'apparence d'une tête

Il est alors possible de modifier l'apparence d'une tête à l'aide des paramètre numéro de la tête à modifier, numéro de l'état à lui appliquer.
0-> tête Neutre, 1-> tête Bien, 2-> tête Passable, 3-> tête MAl

    box->setEtatTete(1,2);

La deuxième tête (la numérotation commence à zéro) sera dans l'état Passable

Réinitialiser les têtes

Il est aussi possible de réinitialiser l'affichage des têtes :

    box->resetTetes("chat", 5);

La syntaxe est la même que celle du constructeur.

Redimensionner les têtes

On peut aussi redimensionner les icones

    box->resizeTetes(32);

Lire l'état d'une tête ou de toutes les têtes
Il est aussi possible de lire l'état d'une ou de toutes les têtes.

    int numEtatTete = box->getEtatTete(1);

lira l'état de la deuxième tête et retourne un entier (0-> tête Neutre, 1-> tête Bien, 2-> tête Passable, 3-> tête MAl)

Le code suivant retourne la liste des états des têtes dans l'ordre.

    QList<int> listeEtatTete = box->getEtatTetes(); // Il y a un "s" à tête

Possibilité complémentaires pour les AbulEduGraphicsTetesWidgetV1

Il existe une fonction pour attribuer un QPen au contour du QGraphicsWidget et une QBrush pour le fond de cet object graphique

setCouleurs(QPen, contour, QBrush background)

Il y a aussi la possibilité de fixer la marge entourant les têtes
setMarge(int marge);

Modification de l'aspect visuel

Vous pouvez créer votre propre thème graphique si vous ne voulez pas utiliser un des deux thèmes par défaut (pingouin ou asma):

  • Création d'un répertoire data/abuledutetev1/
  • Copie du fichier lib/abuledutetev1/abuledutetev1.qrc dans votre répertoire data/abuledutetev1/
  • Personnalisation du fichier qrc

Puis il faut attribuer à chaque image l'un des cinq alias Neutre, Bien, Mal, Passable, PassableMoins
A partir de ce moment, le préfixe définit précédemment sera celui à fournir au constructeur pour accéder aux images.(Il n'est pas nécessaire que les images porte un nom composé du préfixe suivit de suffixe : c'est le fichier abuledutetev1.qrc qui établit la correspondance.

Démonstration

le fichier AbulEduTeteV1.tar.gz ci-dessous vous propose les sources d'une petite appli de démonstration. Attention, ce fichier est valable à la date à laquelle il a été créé, la lib abuledutetev1 évolue ...

Types de têtes

Les têtes utilisées sont dans 3 dossiers différents du répertoire data/abuledutetev1/picto
  • - bilan : ce sont les têtes destinées à être affichées dans des AbulEduExerciceWidgetMessageV1; leur taille est 92 x 92
  • - evaluation : ce sont les têtes destinées à rappeler les "résultats" des exercices passés; leur taille est 115 x 115; elles sont légèrement transparentes (80% d'opacité).
  • - current : ce sont les têtes destinées à afficher l'évaluation instantanée d'une question (on leur ajoute alors un numéro, le nombre de questions restantes) ou d'exercice; leur taille est de 115 x 115.

Gestion de l'affichage de l'évaluation dans les têtes

Outre la modification dans les lib, il faut faire une ou deux choses :
  • - ajouter un dossier "current" dans data/abuledutetev1/picto
  • - ajouter les références à ces images dans le qrc (en fait recopier celui d'Aller, par exemple
  • - rajouter des
        boiteTetes->setEtatTete(m_numExercice, getAbeExerciceEvaluation(),false);
    

    aux bons endroits, c'est à dire (à vérifier) dans slotInitQuestionEntered(), verifieReponse() et donneReponse().
    Attention toutefois à mettre ces appels après les setDimensionsWidgets() qui remettraient la tête en cours de taille normale, et pas un peu plus grande que les autres. Pour verifieReponse() et donneReponse() je les ai mises juste avant le return

cinq_pingouins.png (15 ko) Jean-Louis Frucot, 12/07/2011 22:31

edition_fichier_qrc.png (25,8 ko) Jean-Louis Frucot, 12/07/2011 23:04

AbulEduTeteV1.tar.gz - Une petite appli de démonstration (94,6 ko) Jean-Louis Frucot, 13/07/2011 10:51

AbulEduTeteV1.2.tar.gz (341 ko) Jean-Louis Frucot, 28/07/2011 23:46

20120303-abuledutetev1-themes_par_defaut.png (22,8 ko) Eric Seigne, 03/03/2012 11:03

Redmine Appliance - Powered by TurnKey Linux