QScintilla est un portage de la librairie Scintilla vers le framework Qt permettant l’édition de texte, la coloration syntaxique, repliage du code etc…
Pour l’utiliser il vous faudra installer, si ce n’est déjà fait, le framework Qt : ici.
Puis une fois Qt installé, il faudra télécharger Qscintilla : ici.
Pour l’installer, ouvrez l’invité de commande de Qt (Qt Command Prompt), placez-vous dans le répertoire extrait et allez ensuite dans le répertoire Qt4 :
cd Qt4
qmake
make
make install
Ou sous Windows : qmake & make & make install puis
copy %QTDIR%\lib\qscintilla2.dll %QTDIR%\bin
Ceci fait, vous pouvez commencer à créer votre première application. Voici un exemple créant simplement une fenêtre avec un éditeur :
#include
#include
#include
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QsciScintilla *scintilla = new QsciScintilla;
QsciLexerHTML *lexer = new QsciLexerHTML;
scintilla->setLexer(lexer);
scintilla->show();
return app.exec();
}
Compilez ce bout de code (n’oubliez pas de rajouter LIBS += -lqscintilla2 à votre .pro) et admirez le résutat^^
Pour colorier le texte QScintilla utilise des lexers, ici nous avons utilisé un QsciLexerHTML qui colore le Cobol HTML et avec le PHP, XML, ASP, Python, VBScript, Javascript et SGML.
QScintilla rassemble ainsi 29 QsciLexer pout tous les langages courants : C++, Java, C#, Perl, SQL, Fortran, D etc…
Mais le fait de seulement colorier du code n’est pas intéressant ni vraiment utile.
Heureusement pour nous QScintilla possède tout un tas de propriétés et de fonctions qui vont nous aider à mettre un place un éditeur de texte complet :
// Définit une couleur spécifique pour un élément :
// ici red pour les tags PHPStart ('; ?>)
lexer->setColor(Qt::red, QsciLexerHTML::PHPStart);
// Active la marge à gauche pour la numérotation des lignes
// et lui assigne une largeur de 4
scintilla->setMarginLineNumbers (1, true);
scintilla->setMarginWidth(1, "----");
// ‘Repliage’ du code (parentheses, crochets,
, etc…)
scintilla ->setFolding(QsciScintilla::BoxedFoldStyle);
// Mise en surbrillance des parenthèses, crochets correspondants
scintilla->setBraceMatching(QsciScintilla::SloppyBraceMatch);
// Active l'auto-indentation
scintilla->setAutoIndent(true);
// Charge le contenu du fichier (ligne par ligne) comme source d'auto-complétion
// Et assigne cette source à l'éditeur qui déclenchera l'auto-complétion dès que 3 caractères seront tapés
QsciAPIs *api = new QSciAPIs(lexer);
api->load("fichier.txt");
scintilla->setAutoCompletionSource(QsciScintilla::AcsAPIs);
scintilla->setAutoCompletionThreshold(3);
Etc... etc...
Pour la liste complète des méthodes et des classes de QScintilla direction la Doc.
Sachez également qu’une liste de fonctions propres aux éditeurs de texte existe. Vous pouvez donc aussi bien utiliser undo() / redo(), que indent()/ unindent(), cut() / copy() / paste(), insert() / insertAt() etc…
Bon codage !
Posté par

seiyar81 le 2 novembre 2009 |
Laisser un commentaire (0)
Une nouvelle bien sympathique, les tutoriels Officiels du SiteDuZéro sont maintenant disponibles sous licence Creative Commons CC-BY-NC-SA.
C’est à dire qu’il peuvent être modifiés par n’importe qui tant que les conditions suivantes sont respectées :
- Condition 1 : respecter le droit de paternité en signalant le nom ou pseudo de l’auteur et en créant un lien vers le site.
- Condition 2 : ne pas faire un usage commercial des tutoriels.
- Condition 3 : rediffuser le tutoriel sous la même licence.
Une très bonne nouvelle donc car ainsi cette base pourra être reprise pour être élargie avec des chapitres plus ciblés : sur telle ou telle librairie, sur la sécurité, sur des points particuliers etc… afin d’en faire un véritable cours complet, car il est vrai que les tutoriels posent les bases (et les posent bien d’ailleurs) mais ne vont pas plus loin.
News officielle : Les tutoriels officiels du Site du Zéro sous licence Creative Commons !.