AbulEduTexteV1¶
La classe AbulEduTexteV1 est un QWidget incorporant un QVLayout dans lequel est placé un QTextEdit.
Son propos est de fournir un éditeur de texte adapté aux enfants, donc très simple d'usage. Par contre, le développeur devra pouvoir y avoir accès facilement et le plus complètement possible afin de pouvoir la paramétrer en fonction de ses besoins.
Installation¶
L'installation de la classe AbulEduTexteV1 se fait dans le dossier lib de votre logiciel, par exemple
git submodule add http://redmine.abuledu.org/ryxeo/leterrier-developpeurs/abuledutextev1.git src/lib/abuledutextev1
Mainteneur de la lib:
git clone ssh://gitolite3@redmine.abuledu.org/repositories-redmine/ryxeo/leterrier-developpeurs/abuledutextev1.git
Modification du fichier.pro¶
Pensez à modifier votre fichier .pro pour ajouter cette nouvelle lib
#AbulEduTexteV1 include(lib/abuledutextev1/abuledutextev1.pri)
Utilisation¶
Comme AbulEduTexteV1 est basée sur un QWidget, son intégration est très simple, et ne devrait pas poser de problème. Une autre façon de faire est de créer son interface à l'aide du designer intégré de QtCreator ou de QtDesigner, d'insérer un QWidget puis de le promouvoir en AbulEduTexteV1. Voir ici Promouvoir
Concepts¶
AbulEduTexteV1 est un QWidget composé essentiellement de trois objets :- un QTextEdit dédié à la saisie du texte
- une QToolBar visible par défaut et affichant les différentes QActions accessibles à l'utilisateur
- une QMenuBar qui n'est présente par défaut que si le widget est un topLevelWidget. On peut la créer et l'afficher avec m_monwidget_de_texte->abeTexteSetMenuBar(true)
Ces trois objets sont accessibles via des pointeurs retournés par les fonctions : abeTexteGetMenuBar(), abeTexteGetToolBar(), abeTexteGetDocument()
Usage¶
Cet AbulEduTexteV1 émet le signal somethingHasChanged(bool) dès que son état change (modifié/non modifié). On peut par exemple connecter ce signal avec le slot setWindowModified(bool) de la fenêtre principale et d'afficher ainsi une étoile si le texte a été modifié (ne pas oublier de mettre [*] dans le titre sinon, il ne se passera rien).
setWindowTitle(trUtf8("Sans nom")+"[*]");
// Place une étoile si le fichier texte est modifié, l'enlève sinon
connect(ui->widgetTextEditor, SIGNAL(somethingHasChangedInText(bool)), this, SLOT(setWindowModified(bool)));
Un autre signal est émis lorsque le nom du fichier change fileNameHasChanged(QString) Ce signal renvoie le nom du fichier avec [*] à la fin. Il est possible de l'utiliser ainsi pour modifier le titre de la fenêtre :
// Adapte le titre de la fenêtre au nom du fichier sauvegardé
connect(ui->widgetTextEditor, SIGNAL(fileNameHasChanged(QString)), this, SLOT(setWindowTitle(QString)));
Il est possible de passer un certain nombre de paramètres au AbulEduTexteV1 (voir la doc intégrée au fichier abuledutextev1.h pour plus de détails)
ui->widgetTextEditor->abeTexteSetFontFamily(QString::fromUtf8("andika"));
ui->widgetTextEditor->abeTexteSetFontSize(14);
ui->widgetTextEditor->abeTexteSetAlignment(Qt::AlignHCenter);
ui->widgetTextEditor->abeTexteSetItalic(true);
ui->widgetTextEditor->abeTexteSetUnderline(true);
ui->widgetTextEditor->abeTexteSetBold(true);
Astuces¶
Il est possible par exemple d'ajouter une entrée dans la barre de menu puis d'afficher la barre de menu dans la fenêtre principale en faisant un truc du genre :
// Affiche la barre de menu dans le widget
ui->widgetTextEditor->abeTexteSetMenuBar(true);
// Ajoute une entrée de menu dans la barre du widget de texte
QMenu *menu = new QMenu("Aide");
ui->widgetTextEditor->abeTexteGetMenuBar()->addMenu(menu);
// Place la barre de menu dans la QMainWindow
this->setMenuBar( ui->widgetTextEditor->abeTexteGetMenuBar());
La même manœuvre peut être faite avec la ToolBar
// Place la ToolBar dans la QMainwindow
this->addToolBar(ui->widgetTextEditor->abeTexteGetToolBar());