IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Intégrer un éditeur de code dans une application


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut Intégrer un éditeur de code dans une application
    Bonjour,
    Je travaille sur une application permettant la création de sources (Pascal, C, C++..) dont certaines parties sont automatisées. A une certaine étape cependant l'utilisateur doit saisir du code. Il faudrait donc idéalement lui fournir toutes les fonctionnalités d'un IDE pour simplifier la saisie du code, en pratique selon le temps nécessaire, ça sera bien sûr quelque chose de beaucoup plus réduit.

    On m'avait parlé de QScintilla qui intégrait déjà pas mal de ces fonctionnalités, mais manque de bol, la licence GPL est incompatible avec la licence BSD de l'application sur laquelle je travaille.
    J'ai vu que Qt propose nativement QPlainTextEdit qui pourrait être un bon début (coloration syntaxique, gestion du copier/coller), mais qui semble plus adapté à la saisie de document que de code, du fait qu'il fonctionne par paragraphe [i.e. blocs séparés par des sauts de ligne] et que du code sources est plutôt beaucoup de lignes contenant peu de mots. Malgré ça, l'auto-indentation, l'auto-complétion seraient manquantes. Je ne rend pas trop compte à quel point c'est compliqué à mettre en place.

    Donc, est-ce quelqu'un connaitrait des choses externes dans le genre de QScintilla (mais sous licence LGPL/BSD) ?
    Et, est-ce que QPlainTextEdit reste adapté pour saisir du code, ou vaut-il mieux utiliser QTextEdit ?

    Merci d'avance

  2. #2
    Membre confirmé

    Inscrit en
    Décembre 2009
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 170
    Par défaut
    Salut,
    QSyntaxHighlighter permet de faire ça.
    Voici un exemple http://qt.developpez.com/doc/latest/...ghlighter.html .

  3. #3
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Merci oui, ça j'avais déjà vu ma question n'est pas exactement là. Car dans l'idéal je voudrais beaucoup plus de fonctionnalités qu'une simple coloration syntaxique (indentation auto, auto-complétion...).

  4. #4
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Citation Envoyé par kmedghaith Voir le message
    Salut,
    QSyntaxHighlighter permet de faire ça.
    Voici un exemple http://qt.developpez.com/doc/latest/...ghlighter.html .
    Je pense que cette classe sert uniquement à la coloration syntaxique ce qui est un bon début mais pas suffisant pour les besoins du projet.

    Tu peux regarder plus en détail la classe QTextDocument (http://qt.developpez.com/doc/latest/qtextdocument.html) et combiner les 2 classes dans un QTextEdit.

  5. #5
    Membre confirmé

    Inscrit en
    Décembre 2009
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 170
    Par défaut
    et pour la completition du code, tu peux regarder cet exemple http://qt.developpez.com/doc/latest/...completer.html

  6. #6
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Par défaut
    Bonsoir,

    Ayant travaillé sur un IDE, j'ai réalisé un éditeur de texte tel que tu sembles avoir besoin. Il s'agit d'une classe héritant de QPlainTextEdit. Pour l'auto-complétion, elle utilise la classe QCompleter, pour la coloration, QSyntaxHighlighter, pour la numérotation de ligne, un QWidget avec un paintEvent, et pour l'indentation automatique, il s'agit d'une indentation dans le keyPressEvent à partir du textCursor. Les bulles d'aide informant sur les prototypes sont gérées à la main, mais pas par QToolTip::showText() qui est très lent pour ce genre de travail.
    Globalement, c'est comme on te l'a dit, mais si tu as des questions sur l'implémentation, n'hésites pas !

    Espérant avoir éclairé ta lanterne,
    Amnell.
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  7. #7
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Merci de vos réponses, j'ai tardé à répondre car j'ai dû faire d'autres tâches entre temps. Je me penche maintenant sur le fameux éditeur, j'ai intégré la coloration syntaxique sans problème.

    J'ai une petite question, pour fixer l'indentation (la valeur d'une tab en fait), j'ai utilisé QPlainTextEdit::setTabStopWidth(). Mais la valeur est en pixels, et j'aurais voulu plutôt la fixer en nombre de caractères (j'utilise une police monospace). Est-ce qu'il y aurait un moyen de récupérer à l'exécution la largeur en pixels d'un caractère ?

    Autre détail, lorsqu'on sélectionne un bloc de texte et qu'on appuie sur tab, le texte est remplacé par le caractère tab. Pour qu'au lieu de ça, on indente tout le bloc, j'imagine qu'il faut réimplémenter keyPressEvent() et ensuite insérer une tab au début de chaque ligne. J'ai bon ou il y a plus simple ?

    Merci d'avance !
    (j'aurai sûrement d'autres questions quand je me pencherai sur l'auto complétion ou la numérotation des lignes)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 12/04/2016, 15h29
  2. intégrer du code R dans une application java
    Par supcomingenieur dans le forum R
    Réponses: 3
    Dernier message: 04/06/2013, 13h48
  3. Réponses: 13
    Dernier message: 31/03/2010, 10h35
  4. injection de code dans une application
    Par youp_db dans le forum C
    Réponses: 16
    Dernier message: 21/07/2006, 12h33
  5. [débutante]Intégrer flash dans une application java
    Par bouba83 dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 11/05/2006, 11h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo