Sur cette page

Tâches courantes d'édition de texte riche

Un certain nombre de tâches sont souvent effectuées par les développeurs lorsqu'ils éditent et traitent des documents textuels à l'aide de Qt. Il s'agit notamment de l'utilisation de widgets d'affichage tels que QTextBrowser et QTextEdit, de la création de documents avec QTextDocument, de l'édition à l'aide de QTextCursor et de l'exportation de la structure du document. Ce document décrit certaines des façons les plus courantes d'utiliser les classes de texte riche pour effectuer ces tâches, en montrant des modèles pratiques qui peuvent être réutilisés dans vos propres applications.

Utilisation de QTextEdit

Un widget d'éditeur de texte peut être construit et utilisé pour afficher du 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 avec un cadre racine, à l'intérieur duquel se trouve un bloc de texte vide. Ce document peut être obtenu pour ê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 édité à l'aide de plusieurs curseurs à la fois, le site QTextEdit n'affiche qu'un seul curseur à la fois. Par conséquent, si nous voulons mettre à jour l'éditeur pour afficher un curseur particulier ou sa sélection, nous devons définir le curseur de l'éditeur après avoir modifié le document :

editor->setTextCursor(cursor);

Sélection du texte

Le texte est sélectionné 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 au premier point puis le déplacer en utilisant un mode spécial (QTextCursor::MoveMode) avec une opération de déplacement (QTextCursor::MoveOperation). Lorsque nous sélectionnons le texte, nous laissons l'ancre de sélection à l'ancienne position du curseur, comme l'utilisateur pourrait le faire en maintenant la touche Majuscule enfoncée lorsqu'il sélectionne du 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 propose un certain nombre d'opérations de déplacement courantes pour sélectionner des caractères individuels, des mots, des lignes et des blocs entiers.

Recherche de texte

QTextDocument fournit une interface de recherche basée sur le curseur, facilitant la recherche et la modification de texte dans le style 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 que le curseur ne doit pas être déplacé 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 grands documents en texte riche qui sont lus à l'écran, en les rendant de la même manière qu'un navigateur web. Par conséquent, il ne décompose pas automatiquement le contenu du document en morceaux de la taille d'une page qui conviennent à l'impression.

QTextDocument fournit une fonction print() pour permettre l'impression de documents à l'aide de la classe QPrinter. Le code suivant montre comment préparer un document dans un QTextEdit pour l'imprimer 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 obtenu à partir de l'éditeur de texte, et une QPrinter est construite puis configurée à l'aide d'une QPrintDialog. Si l'utilisateur accepte la configuration de l'imprimante, le document est formaté 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.