Tareas comunes de edición de texto enriquecido
Hay una serie de tareas que suelen realizar los desarrolladores cuando editan y procesan documentos de texto utilizando Qt. Entre ellas se incluyen el uso de widgets de visualización como QTextBrowser y QTextEdit, la creación de documentos con QTextDocument, la edición mediante QTextCursor y la exportación de la estructura del documento. Este documento esboza algunas de las formas más comunes de utilizar las clases de texto enriquecido para realizar estas tareas, mostrando patrones convenientes que pueden ser reutilizados en tus propias aplicaciones.
Uso de QTextEdit
Un widget de editor de texto puede ser construido y utilizado para mostrar HTML de la siguiente manera:
QTextEdit *editor = new QTextEdit(parent); editor->setHtml(aStringContainingHTMLtext); editor->show();
Por defecto, el editor de texto contiene un documento con un marco raíz, dentro del cual hay un bloque de texto vacío. Este documento puede obtenerse para que pueda ser modificado directamente por la aplicación:
QTextDocument *document = editor->document();
También se puede utilizar el cursor del editor de texto para editar un documento:
QTextCursor cursor = editor->textCursor();
Aunque un documento puede editarse utilizando varios cursores a la vez, un QTextEdit sólo muestra un único cursor a la vez. Por lo tanto, si queremos actualizar el editor para que muestre un cursor concreto o su selección, tenemos que configurar el cursor del editor después de haber modificado el documento:
editor->setTextCursor(cursor);
Seleccionar texto
El texto se selecciona moviendo el cursor mediante operaciones similares a las que realiza un usuario en un editor de texto. Para seleccionar texto entre dos puntos del documento, debemos situar el cursor en el primer punto y luego moverlo utilizando un modo especial (QTextCursor::MoveMode) con una operación de desplazamiento (QTextCursor::MoveOperation). Cuando seleccionamos el texto, dejamos el ancla de selección en la antigua posición del cursor tal y como podría hacer el usuario manteniendo pulsada la tecla Mayús al seleccionar texto:
cursor.movePosition(QTextCursor::StartOfWord); cursor.movePosition(QTextCursor::EndOfWord, QTextCursor::KeepAnchor);
En el código anterior, se selecciona una palabra entera utilizando este método. QTextCursor proporciona una serie de operaciones de movimiento comunes para seleccionar caracteres individuales, palabras, líneas y bloques enteros.
Buscar texto
QTextDocument proporciona una interfaz basada en el cursor para realizar búsquedas, facilitando la búsqueda y modificación de texto al estilo de un editor de texto. El siguiente código encuentra todas las instancias de una palabra concreta en un documento y cambia el color de cada una de ellas:
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); } }
Observe que no es necesario mover el cursor después de cada operación de búsqueda y sustitución; siempre se sitúa al final de la palabra que se acaba de sustituir.
Impresión de documentos
QTextEdit está diseñado para la visualización de grandes documentos de texto enriquecido que se leen en pantalla, renderizándolos del mismo modo que un navegador web. Como resultado, no divide automáticamente el contenido del documento en trozos del tamaño de una página adecuados para su impresión.
QTextDocument proporciona una función print() para permitir que los documentos se impriman utilizando la clase QPrinter. El siguiente código muestra cómo preparar un documento en un QTextEdit para su impresión con una QPrinter:
QTextDocument *document = editor->document(); QPrinter printer; QPrintDialog *dlg = new QPrintDialog(&printer, this); if (dlg->exec() != QDialog::Accepted) return; document->print(&printer);
El documento se obtiene del editor de texto, se construye un QPrinter y se configura utilizando un QPrintDialog. Si el usuario acepta la configuración de la impresora, el documento se formatea y se imprime utilizando la función 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.