Projet

Général

Profil

Développement du module Phrase Sans Espaces

Déroulement

  1. La phrase avec les espaces est présentée.
  2. L'utilisateur appuie sur "Commencer"
  3. La phrase sans espaces est présentée.
  4. L'utilisateur insère des espaces à la souris ou au clavier, un retour visuel est fourni
  5. Quand l'utilisateur a fini, il clique sur Soumettre, une évaluation est retournée.
  6. On revient au point 1 autant de fois que de phrases à compléter.

Implémentation

Tout d'abord, il faut savoir ce qu'est une phrase ?
http://fr.wikipedia.org/wiki/Phrase#D.C3.A9limitation_de_la_phrase
  • Je délimiterai les phrases par le "." le "!" le "?" et les "..." ou "…"
    Eh bien ! non, je me limite en fait au point et points de suspension car une phrase peut ne pas être terminée après un ? ou un ! (dans le cas des dialogues par exemple.
  • On enlève aussi les espaces surnuméraires ;-)
Ensuite, il faut enlever les espaces de la chaine tout en sachant où ils étaient. On produit donc une QList<int> stockant la position des espaces et qui servira de référence
La chaine est affichée lorsqu'on presse sur "Commencer"
  • Le curseur texte peut être déplacé à la souris ou au clavier. On garde en mémoire l'endroit où le curseur est positionné
  • Les espaces sont insérés avec la barre espace et on compare avec la position mémorisée lors de la suppression des espaces.

Pour la gestion du clavier, j'utilise un eventFilter sur le QTextEdit phrase :

bool ExercicePhraseSansEspaces::eventFilter(QObject *obj, QEvent *event)
{
    if (event->type() == QEvent::KeyPress)
    {
        QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);

        switch(keyEvent->key())
        {        
          case Qt::Key_Space:
            qDebug()<<"Appui sur espace";
        ......

L'utilisation de la souris génère un évenement cursorPositionChanged() lors duquel on récupère la position de la souris que l'on convertit en position du curseur text

void ExercicePhraseSansEspaces::cursorPositionChanged()
{
qDebug()<<"cursorPositionChanged";
    m_curseur=(phrase->textCursor());
    m_curseurPosition = m_curseur.position();
    qDebug()<<"position curseur eric"<<m_curseurPosition;

}

D'ailleurs lorsqu'on se déplace au clavier, le même évènement est émis, la position du curseur est donc aussi mise à jour.

Interactions avec l'utilisateur

On va tracer, le nombre de clics sur la barre espace, le nombre d'espaces correctement placés, le nombre d'espaces mal placés. Est-il utile de compter les appuis sur les touches de déplacement et les clics souris ?
Le nombre d'espaces à placer est fourni au moment du lancement de l'exercice (m_espacePos.size()-2)

Redmine Appliance - Powered by TurnKey Linux