Projet

Général

Profil

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());

20121013_Sélection_001.png (27 ko) Jean-Louis, 13/10/2012 16:42

Redmine Appliance - Powered by TurnKey Linux