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