Sur cette page

Tâches courantes d'édition de texte enrichi

Il existe un certain nombre de tâches que les développeurs effectuent souvent lorsqu’ils éditent et traitent des documents texte à l’aide de Qt. Celles-ci incluent l’utilisation de widgets d’affichage tels que QTextBrowser et QTextEdit, la création de documents avec QTextDocument, l’édition à l’aide d’un QTextCursor et l’exportation de la structure du document. Ce document présente certaines des méthodes les plus courantes d’utilisation des classes de texte enrichi pour effectuer ces tâches, en mettant en avant des modèles pratiques pouvant être réutilisés dans vos propres applications.

Utilisation de QTextEdit

Un widget d’éditeur de texte peut être créé et utilisé pour afficher du code HTML de la manière suivante :

QTextEdit *editor = new QTextEdit(parent);
editor->setHtml(aStringContainingHTMLtext);
editor->show();

Par défaut, l’éditeur de texte contient un document doté d’un cadre racine, à l’intérieur duquel se trouve un bloc de texte vide. Ce document peut être récupéré afin d’être modifié directement par l’application :

QTextDocument *document = editor->document();

Le curseur de l’éditeur de texte peut également être utilisé pour modifier un document :

QTextCursor cursor = editor->textCursor();

Bien qu’un document puisse être modifié à l’aide de plusieurs curseurs à la fois, un ` QTextEdit ` n’affiche qu’un seul curseur à la fois. Par conséquent, si l’on souhaite mettre à jour l’éditeur pour afficher un curseur particulier ou sa sélection, il faut définir le curseur de l’éditeur après avoir modifié le document :

editor->setTextCursor(cursor);

Sélection de texte

La sélection de texte s’effectue en déplaçant le curseur à l’aide d’opérations similaires à celles effectuées par un utilisateur dans un éditeur de texte. Pour sélectionner du texte entre deux points du document, il faut positionner le curseur sur le premier point, puis le déplacer en utilisant un mode spécial (QTextCursor::MoveMode) avec une opération de déplacement (QTextCursor::MoveOperation). Lorsque l’on sélectionne le texte, on laisse le point d’ancrage de la sélection à l’ancienne position du curseur, exactement comme le ferait un utilisateur en maintenant la touche Maj enfoncée lors de la sélection de texte :

    cursor.movePosition(QTextCursor::StartOfWord);
    cursor.movePosition(QTextCursor::EndOfWord, QTextCursor::KeepAnchor);

Dans le code ci-dessus, un mot entier est sélectionné à l’aide de cette méthode. ` QTextCursor ` fournit un certain nombre d’opérations de déplacement courantes permettant de sélectionner des caractères individuels, des mots, des lignes et des blocs entiers.

Recherche de texte

QTextDocument fournit une interface basée sur le curseur pour la recherche, ce qui facilite la recherche et la modification de texte à la manière d’un éditeur de texte. Le code suivant recherche toutes les occurrences d’un mot particulier dans un document et modifie la couleur de chacune d’entre elles :

    QTextCursor newCursor(document);

    while (!newCursor.isNull() && !newCursor.atEnd()) {
        newCursor = document->find(searchString, newCursor);

        if (!newCursor.isNull()) {
            newCursor.movePosition(QTextCursor::WordRight,
                                   QTextCursor::KeepAnchor);

            newCursor.mergeCharFormat(colorFormat);
        }
    }

Notez qu’il n’est pas nécessaire de déplacer le curseur après chaque opération de recherche et de remplacement ; il est toujours positionné à la fin du mot qui vient d’être remplacé.

Impression de documents

QTextEdit est conçu pour l’affichage de documents de texte enrichi volumineux destinés à être lus à l’écran, en les rendant de la même manière qu’un navigateur web. Par conséquent, il ne divise pas automatiquement le contenu du document en segments de la taille d’une page adaptés à l’impression.

QTextDocument fournit une fonction print() permettant d’imprimer des documents à l’aide de la classe QPrinter. Le code suivant montre comment préparer un document dans un QTextEdit pour l’impression avec un QPrinter:

    QTextDocument *document = editor->document();
    QPrinter printer;

    QPrintDialog *dlg = new QPrintDialog(&printer, this);
    if (dlg->exec() != QDialog::Accepted)
        return;

    document->print(&printer);

Le document est récupéré depuis l’éditeur de texte, puis une instance de ` QPrinter ` est créée et configurée à l’aide d’un objet ` QPrintDialog`. Si l’utilisateur accepte la configuration de l’imprimante, le document est mis en forme et imprimé à l’aide de la fonction ` print()`.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.