Auf dieser Seite

Häufige Aufgaben bei der Bearbeitung von Rich-Text-Dokumenten

Es gibt eine Reihe von Aufgaben, die Entwickler häufig ausführen, wenn sie Textdokumente mit Qt XML bearbeiten und verarbeiten. Dazu gehören die Verwendung von Anzeige-Widgets wie „ QTextBrowser “ und „ QTextEdit “, die Erstellung von Dokumenten mit „ QTextDocument “, die Bearbeitung mit einem „ QTextCursor “ sowie der Export der Dokumentstruktur. Dieses Dokument beschreibt einige der gängigsten Möglichkeiten, die Rich-Text-Klassen zur Ausführung dieser Aufgaben zu nutzen, und zeigt praktische Muster auf, die Sie in Ihren eigenen Anwendungen wiederverwenden können.

Verwendung von QTextEdit

Ein Texteditor-Widget kann wie folgt erstellt und zur Anzeige von HTML verwendet werden:

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

Standardmäßig enthält der Texteditor ein Dokument mit einem Stammframe, in dem sich ein leerer Textblock befindet. Dieses Dokument kann abgerufen werden, sodass es direkt von der Anwendung geändert werden kann:

QTextDocument *document = editor->document();

Der Cursor des Texteditors kann ebenfalls zur Bearbeitung eines Dokuments verwendet werden:

QTextCursor cursor = editor->textCursor();

Obwohl ein Dokument mit mehreren Cursorn gleichzeitig bearbeitet werden kann, zeigt ein „ QTextEdit “ jeweils nur einen einzigen Cursor an. Wenn wir also den Editor so aktualisieren möchten, dass er einen bestimmten Cursor oder dessen Auswahl anzeigt, müssen wir den Cursor des Editors setzen, nachdem wir das Dokument geändert haben:

editor->setTextCursor(cursor);

Text auswählen

Text wird durch Bewegen des Cursors mit Operationen ausgewählt, die denen ähneln, die ein Benutzer in einem Texteditor ausführt. Um Text zwischen zwei Punkten im Dokument auszuwählen, müssen wir den Cursor am ersten Punkt positionieren und ihn dann in einem speziellen Modus (QTextCursor::MoveMode) mit einer Verschiebungsoperation (QTextCursor::MoveOperation) bewegen. Bei der Auswahl des Textes belassen wir den Auswahlanker an der alten Cursorposition, genau wie es ein Benutzer tun würde, indem er beim Auswählen von Text die Umschalttaste gedrückt hält:

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

Im obigen Code wird mit dieser Methode ein ganzes Wort ausgewählt. ` QTextCursor ` bietet eine Reihe gängiger Verschiebungsoperationen zum Auswählen einzelner Zeichen, Wörter, Zeilen und ganzer Blöcke.

Text suchen

QTextDocument bietet eine cursorbasierte Schnittstelle für die Suche, wodurch sich Text ganz im Stil eines Texteditors leicht finden und bearbeiten lässt. Der folgende Code findet alle Vorkommen eines bestimmten Wortes in einem Dokument und ändert jeweils dessen Farbe:

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

Beachten Sie, dass der Cursor nach jedem Such- und Ersetzungsvorgang nicht verschoben werden muss; er befindet sich immer am Ende des gerade ersetzten Wortes.

Dokumente drucken

QTextEdit ist für die Anzeige umfangreicher Rich-Text-Dokumente konzipiert, die auf dem Bildschirm gelesen werden, und rendert diese auf die gleiche Weise wie ein Webbrowser. Daher wird der Inhalt des Dokuments nicht automatisch in seitenlange Abschnitte unterteilt, die für den Druck geeignet sind.

QTextDocument bietet die Funktion ` print()` an, um das Drucken von Dokumenten mithilfe der Klasse ` QPrinter ` zu ermöglichen. Der folgende Code zeigt, wie ein Dokument in einer ` QTextEdit ` für den Druck mit einer ` QPrinter` vorbereitet wird:

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

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

    document->print(&printer);

Das Dokument wird aus dem Texteditor abgerufen, und ein ` QPrinter ` wird erstellt und anschließend mithilfe eines ` QPrintDialog` konfiguriert. Wenn der Benutzer die Druckerkonfiguration akzeptiert, wird das Dokument formatiert und mithilfe der Funktion ` print()` gedruckt.

© 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.