En esta página

QTextCursor Class

La clase QTextCursor ofrece una API para acceder y modificar QTextDocuments. Más...

Cabecera: #include <QTextCursor>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

Nota: Todas las funciones de esta clase son reentrantes.

Tipos Públicos

enum MoveMode { MoveAnchor, KeepAnchor }
enum MoveOperation { NoMove, Start, StartOfLine, StartOfBlock, StartOfWord, …, PreviousRow }
enum SelectionType { Document, BlockUnderCursor, LineUnderCursor, WordUnderCursor }

Funciones Públicas

QTextCursor()
QTextCursor(QTextDocument *document)
QTextCursor(QTextFrame *frame)
QTextCursor(const QTextBlock &block)
QTextCursor(const QTextCursor &cursor)
~QTextCursor()
int anchor() const
bool atBlockEnd() const
bool atBlockStart() const
bool atEnd() const
bool atStart() const
void beginEditBlock()
QTextBlock block() const
QTextCharFormat blockCharFormat() const
QTextBlockFormat blockFormat() const
int blockNumber() const
QTextCharFormat charFormat() const
void clearSelection()
int columnNumber() const
QTextList *createList(const QTextListFormat &format)
QTextList *createList(QTextListFormat::Style style)
QTextFrame *currentFrame() const
QTextList *currentList() const
QTextTable *currentTable() const
void deleteChar()
void deletePreviousChar()
QTextDocument *document() const
void endEditBlock()
bool hasComplexSelection() const
bool hasSelection() const
void insertBlock()
void insertBlock(const QTextBlockFormat &format)
void insertBlock(const QTextBlockFormat &format, const QTextCharFormat &charFormat)
void insertFragment(const QTextDocumentFragment &fragment)
QTextFrame *insertFrame(const QTextFrameFormat &format)
void insertHtml(const QString &html)
void insertImage(const QTextImageFormat &format)
void insertImage(const QString &name)
void insertImage(const QImage &image, const QString &name = QString())
void insertImage(const QTextImageFormat &format, QTextFrameFormat::Position alignment)
QTextList *insertList(const QTextListFormat &format)
QTextList *insertList(QTextListFormat::Style style)
(since 6.4) void insertMarkdown(const QString &markdown, QTextDocument::MarkdownFeatures features = QTextDocument::MarkdownDialectGitHub)
QTextTable *insertTable(int rows, int columns, const QTextTableFormat &format)
QTextTable *insertTable(int rows, int columns)
void insertText(const QString &text)
void insertText(const QString &text, const QTextCharFormat &format)
bool isCopyOf(const QTextCursor &other) const
bool isNull() const
void joinPreviousEditBlock()
bool keepPositionOnInsert() const
void mergeBlockCharFormat(const QTextCharFormat &modifier)
void mergeBlockFormat(const QTextBlockFormat &modifier)
void mergeCharFormat(const QTextCharFormat &modifier)
bool movePosition(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = MoveAnchor, int n = 1)
int position() const
int positionInBlock() const
void removeSelectedText()
void select(QTextCursor::SelectionType selection)
void selectedTableCells(int *firstRow, int *numRows, int *firstColumn, int *numColumns) const
QString selectedText() const
QTextDocumentFragment selection() const
int selectionEnd() const
int selectionStart() const
void setBlockCharFormat(const QTextCharFormat &format)
void setBlockFormat(const QTextBlockFormat &format)
void setCharFormat(const QTextCharFormat &format)
void setKeepPositionOnInsert(bool b)
void setPosition(int pos, QTextCursor::MoveMode m = MoveAnchor)
void setVerticalMovementX(int x)
void setVisualNavigation(bool b)
void swap(QTextCursor &other)
int verticalMovementX() const
bool visualNavigation() const
bool operator!=(const QTextCursor &other) const
bool operator<(const QTextCursor &other) const
bool operator<=(const QTextCursor &other) const
QTextCursor &operator=(const QTextCursor &cursor)
bool operator==(const QTextCursor &other) const
bool operator>(const QTextCursor &other) const
bool operator>=(const QTextCursor &other) const

Descripción Detallada

Los cursores de texto son objetos que se utilizan para acceder y modificar el contenido y la estructura subyacente de los documentos de texto a través de una interfaz de programación que imita el comportamiento de un cursor en un editor de texto. QTextCursor contiene información tanto sobre la posición del cursor dentro de QTextDocument como sobre cualquier selección que haya realizado.

QTextCursor se basa en el comportamiento de un cursor de texto en un editor de texto, proporcionando un medio programático para realizar acciones estándar a través de la interfaz de usuario. Un documento puede ser considerado como una cadena de caracteres. La posición actual del cursor position() se encuentra siempre entre dos caracteres consecutivos de la cadena, o bien antes del primer carácter o después del último. Los documentos también pueden contener tablas, listas, imágenes y otros objetos además de texto, pero, desde el punto de vista del desarrollador, el documento puede tratarse como una cadena larga. Se puede considerar que algunas partes de esa cadena se encuentran dentro de determinados bloques (por ejemplo, párrafos), o dentro de una celda de una tabla, o de un elemento de una lista, o de otros elementos estructurales. Cuando hablamos de "carácter actual" nos referimos al carácter situado inmediatamente antes del cursor position() en el documento. Del mismo modo, el "bloque actual" es el bloque que contiene el cursor position().

Un QTextCursor también tiene una posición anchor(). El texto que se encuentra entre anchor() y position() es la selección. Si anchor() == position() no hay selección.

La posición del cursor puede modificarse mediante programación utilizando setPosition() y movePosition(); este último también puede utilizarse para seleccionar texto. Para selecciones, véase selectionStart(), selectionEnd(), hasSelection(), clearSelection() y removeSelectedText().

Si position() está al principio de un bloque, atBlockStart() devuelve true; y si está al final de un bloque, atBlockEnd() devuelve verdadero. El formato del carácter actual es devuelto por charFormat(), y el formato del bloque actual es devuelto por blockFormat().

El formato puede aplicarse al documento de texto actual mediante las funciones setCharFormat(), mergeCharFormat(), setBlockFormat() y mergeBlockFormat(). Las funciones 'set' reemplazarán el formato actual de caracteres o bloques del cursor, mientras que las funciones 'merge' añadirán las propiedades de formato dadas al formato actual del cursor. Si el cursor tiene una selección, el formato dado se aplica a la selección actual. Tenga en cuenta que cuando sólo se selecciona una parte de un bloque, el formato de bloque se aplica a todo el bloque. El texto en la posición actual del carácter puede convertirse en una lista utilizando createList().

Las supresiones pueden realizarse mediante deleteChar(), deletePreviousChar() y removeSelectedText().

Las cadenas de texto pueden insertarse en el documento con la función insertText(), los bloques (que representan nuevos párrafos) pueden insertarse con insertBlock().

Los fragmentos de texto existentes pueden insertarse con insertFragment() pero, si desea insertar trozos de texto en varios formatos, suele seguir siendo más fácil utilizar insertText() y suministrar un formato de caracteres.

Con el cursor también pueden insertarse en el documento diversos tipos de estructuras de nivel superior:

  • Las listas son secuencias ordenadas de elementos de bloque que se decoran con viñetas o símbolos. Se insertan en un formato determinado con insertList().
  • Las tablas se insertan con la función insertTable(), y se les puede dar un formato opcional. Contienen una matriz de celdas que pueden recorrerse con el cursor.
  • Las imágenes en línea se insertan con insertImage(). La imagen que se va a utilizar puede especificarse en un formato de imagen o por su nombre.
  • Los marcos se insertan llamando a insertFrame() con un formato especificado.

Las acciones pueden agruparse (es decir, tratarse como una única acción para deshacer/rehacer) mediante beginEditBlock() y endEditBlock().

Los movimientos del cursor se limitan a las posiciones válidas del cursor. En la escritura latina, esto es, entre dos caracteres consecutivos cualesquiera del texto, antes del primer carácter o después del último. En otros sistemas de escritura, los movimientos del cursor se limitan a "grupos" (por ejemplo, una sílaba en devanagari, o una letra básica más diacríticos). Funciones como movePosition() y deleteChar() limitan el movimiento del cursor a estas posiciones válidas.

Véase también Procesamiento de texto enriquecido.

Documentación de tipos de miembros

enum QTextCursor::MoveMode

ConstanteValorDescripción
QTextCursor::MoveAnchor0Mueve el ancla a la misma posición que el cursor.
QTextCursor::KeepAnchor1Mantiene el ancla donde está.

Si el anchor() se mantiene donde está y el position() se mueve, se seleccionará el texto intermedio.

enum QTextCursor::MoveOperation

ConstanteValorDescripción
QTextCursor::NoMove0Mantener el cursor donde está
QTextCursor::Start1Mover al principio del documento.
QTextCursor::StartOfLine3Mover al principio de la línea actual.
QTextCursor::StartOfBlock4Ir al principio del bloque actual.
QTextCursor::StartOfWord5Ir al principio de la palabra actual.
QTextCursor::PreviousBlock6Ir al principio del bloque anterior.
QTextCursor::PreviousCharacter7Desplazarse al carácter anterior.
QTextCursor::PreviousWord8Ir al principio de la palabra anterior.
QTextCursor::Up2Subir una línea.
QTextCursor::Left9Mover un carácter a la izquierda.
QTextCursor::WordLeft10Desplazarse una palabra a la izquierda.
QTextCursor::End11Desplazarse al final del documento.
QTextCursor::EndOfLine13Ir al final de la línea actual.
QTextCursor::EndOfWord14Desplazarse al final de la palabra actual.
QTextCursor::EndOfBlock15Desplazarse al final del bloque actual.
QTextCursor::NextBlock16Pasar al principio del bloque siguiente.
QTextCursor::NextCharacter17Pasar al carácter siguiente.
QTextCursor::NextWord18Pasar a la palabra siguiente.
QTextCursor::Down12Bajar una línea.
QTextCursor::Right19Desplazarse un carácter a la derecha.
QTextCursor::WordRight20Desplazarse una palabra a la derecha.
QTextCursor::NextCell21Moverse al principio de la siguiente celda de la tabla dentro de la tabla actual. Si la celda actual es la última de la fila, el cursor se moverá a la primera celda de la fila siguiente.
QTextCursor::PreviousCell22Moverse al principio de la celda de la tabla anterior dentro de la tabla actual. Si la celda actual es la primera celda de la fila, el cursor se moverá a la última celda de la fila anterior.
QTextCursor::NextRow23Moverse a la primera nueva celda de la siguiente fila dentro de la tabla actual.
QTextCursor::PreviousRow24Mover a la última celda de la fila anterior en la tabla actual.

Véase también movePosition().

enum QTextCursor::SelectionType

Este enum describe los tipos de selección que se pueden aplicar con la función select().

ConstanteValorDescripción
QTextCursor::Document3Selecciona todo el documento.
QTextCursor::BlockUnderCursor2Selecciona el bloque de texto bajo el cursor.
QTextCursor::LineUnderCursor1Selecciona la línea de texto bajo el cursor.
QTextCursor::WordUnderCursor0Selecciona la palabra situada bajo el cursor. Si el cursor no está situado dentro de una cadena de caracteres seleccionables, no se selecciona ningún texto.

Documentación de las funciones miembro

QTextCursor::QTextCursor()

Construye un cursor nulo.

[explicit] QTextCursor::QTextCursor(QTextDocument *document)

Construye un cursor que apunta al principio de document.

[explicit] QTextCursor::QTextCursor(QTextFrame *frame)

Construye un cursor que apunta al principio de frame.

[explicit] QTextCursor::QTextCursor(const QTextBlock &block)

Construye un cursor que apunta al principio de block.

QTextCursor::QTextCursor(const QTextCursor &cursor)

Construye un nuevo cursor que es una copia de cursor.

[noexcept] QTextCursor::~QTextCursor()

Destruye el QTextCursor.

int QTextCursor::anchor() const

Devuelve la posición del ancla; es lo mismo que position() a menos que haya una selección, en cuyo caso position() marca un extremo de la selección y anchor() marca el otro extremo. Al igual que la posición del cursor, la posición de anclaje es entre caracteres.

Véase también position(), setPosition(), movePosition(), selectionStart() y selectionEnd().

bool QTextCursor::atBlockEnd() const

Devuelve true si el cursor está al final de un bloque; en caso contrario devuelve false.

Véase también atBlockStart() y atEnd().

bool QTextCursor::atBlockStart() const

Devuelve true si el cursor está al principio de un bloque; en caso contrario devuelve false.

Véase también atBlockEnd() y atStart().

bool QTextCursor::atEnd() const

Devuelve true si el cursor está al final del documento; en caso contrario devuelve false.

Véase también atStart() y atBlockEnd().

bool QTextCursor::atStart() const

Devuelve true si el cursor está al principio del documento; en caso contrario devuelve false.

Véase también atBlockStart() y atEnd().

void QTextCursor::beginEditBlock()

Indica el inicio de un bloque de operaciones de edición en el documento que deben aparecer como una única operación desde el punto de vista de deshacer/rehacer.

Por ejemplo:

QTextCursor cursor(textDocument);
cursor.beginEditBlock();
cursor.insertText("Hello");
cursor.insertText("World");
cursor.endEditBlock();

textDocument->undo();

La llamada a undo() hará que se deshagan ambas inserciones, provocando que se eliminen tanto "Mundo" como "Hola".

Es posible anidar llamadas a beginEditBlock y endEditBlock. El par superior determinará el alcance de la operación deshacer/rehacer.

Véase también endEditBlock().

QTextBlock QTextCursor::block() const

Devuelve el bloque que contiene el cursor.

QTextCharFormat QTextCursor::blockCharFormat() const

Devuelve el formato de caracteres de bloque del bloque en el que se encuentra el cursor.

El formato de caracteres de bloque es el que se utiliza al insertar texto al principio de un bloque vacío.

Véase también setBlockCharFormat().

QTextBlockFormat QTextCursor::blockFormat() const

Devuelve el formato de bloque del bloque en el que se encuentra el cursor.

Véase también setBlockFormat() y charFormat().

int QTextCursor::blockNumber() const

Devuelve el número del bloque en el que se encuentra el cursor, o 0 si el cursor no es válido.

Tenga en cuenta que esta función sólo tiene sentido en documentos sin objetos complejos como tablas o marcos.

QTextCharFormat QTextCursor::charFormat() const

Devuelve el formato del carácter situado inmediatamente antes del cursor position(). Si el cursor está situado al principio de un bloque de texto que no está vacío, se devuelve el formato del carácter situado inmediatamente después del cursor.

Véase también setCharFormat(), insertText() y blockFormat().

void QTextCursor::clearSelection()

Borra la selección actual situando el ancla en la posición del cursor.

Tenga en cuenta que no borra el texto de la selección.

Véase también removeSelectedText() y hasSelection().

int QTextCursor::columnNumber() const

Devuelve la posición del cursor dentro de la línea que lo contiene.

Tenga en cuenta que se trata del número de columna relativo a una línea envuelta, no relativo al bloque (es decir, al párrafo).

Probablemente prefiera llamar a positionInBlock().

Véase también positionInBlock().

QTextList *QTextCursor::createList(const QTextListFormat &format)

Crea y devuelve una nueva lista con el format dado , y hace que el párrafo actual el cursor esté en el primer elemento de la lista.

Véase también insertList() y currentList().

QTextList *QTextCursor::createList(QTextListFormat::Style style)

Crea y devuelve una nueva lista con la dirección style, haciendo que el párrafo actual del cursor sea el primer elemento de la lista.

El estilo a utilizar viene definido por el enum QTextListFormat::Style.

Se trata de una función sobrecargada.

Véase también insertList() y currentList().

QTextFrame *QTextCursor::currentFrame() const

Devuelve un puntero al fotograma actual. Devuelve nullptr si el cursor no es válido.

Véase también insertFrame().

QTextList *QTextCursor::currentList() const

Devuelve la lista actual si el cursor position() está dentro de un bloque que forma parte de una lista; en caso contrario devuelve nullptr.

Véase también insertList() y createList().

QTextTable *QTextCursor::currentTable() const

Devuelve un puntero a la tabla actual si el cursor position() está dentro de un bloque que forma parte de una tabla; en caso contrario devuelve nullptr.

Véase también insertTable().

void QTextCursor::deleteChar()

Si no hay texto seleccionado, borra el carácter en la posición actual del cursor; en caso contrario, borra el texto seleccionado.

Véase también deletePreviousChar(), hasSelection() y clearSelection().

void QTextCursor::deletePreviousChar()

Si no hay texto seleccionado, borra el carácter situado antes de la posición actual del cursor; en caso contrario, borra el texto seleccionado.

Véase también deleteChar(), hasSelection() y clearSelection().

QTextDocument *QTextCursor::document() const

Devuelve el documento al que está asociado este cursor.

void QTextCursor::endEditBlock()

Indica el final de un bloque de operaciones de edición en el documento que deberían aparecer como una única operación desde el punto de vista de deshacer/rehacer.

Véase también beginEditBlock().

bool QTextCursor::hasComplexSelection() const

Devuelve true si el cursor contiene una selección que no es simplemente un rango de selectionStart() a selectionEnd(); en caso contrario devuelve false.

Las selecciones complejas son aquellas que abarcan al menos dos celdas de una tabla; su extensión se especifica mediante selectedTableCells().

bool QTextCursor::hasSelection() const

Devuelve true si el cursor contiene una selección; en caso contrario devuelve false.

void QTextCursor::insertBlock()

Inserta un nuevo bloque vacío en el cursor position() con los actuales blockFormat() y charFormat().

Véase también setBlockFormat().

void QTextCursor::insertBlock(const QTextBlockFormat &format)

Inserta un nuevo bloque vacío en el cursor position() con formato de bloque format y el actual charFormat() como formato de bloque char.

Se trata de una función sobrecargada.

Véase también setBlockFormat().

void QTextCursor::insertBlock(const QTextBlockFormat &format, const QTextCharFormat &charFormat)

Inserta un nuevo bloque vacío en el cursor position() con formato de bloque format y charFormat como formato char de bloque.

Se trata de una función sobrecargada.

Véase también setBlockFormat().

void QTextCursor::insertFragment(const QTextDocumentFragment &fragment)

Inserta el texto fragment en la dirección actual position().

QTextFrame *QTextCursor::insertFrame(const QTextFrameFormat &format)

Inserta un marco con el format dado en el cursor actual position(), mueve el cursor position() dentro del marco, y devuelve el marco.

Si el cursor contiene una selección, toda la selección se mueve dentro del marco.

Véase también hasSelection().

void QTextCursor::insertHtml(const QString &html)

Inserta el texto html en la dirección actual position(). El texto se interpreta como HTML.

Nota: Cuando utilice esta función con una hoja de estilo, ésta sólo se aplicará al bloque actual del documento. Para aplicar una hoja de estilo a todo el documento, utilice QTextDocument::setDefaultStyleSheet().

void QTextCursor::insertImage(const QTextImageFormat &format)

Inserta la imagen definida por format en la actual position().

void QTextCursor::insertImage(const QString &name)

Método de conveniencia para insertar la imagen con el name dado en el position actual ().

QImage img;
textDocument->addResource(QTextDocument::ImageResource, QUrl("myimage"), img);
cursor.insertImage("myimage");

Se trata de una función sobrecargada.

void QTextCursor::insertImage(const QImage &image, const QString &name = QString())

Función de conveniencia para insertar el image dado con un name opcional en el position actual ().

Se trata de una función sobrecargada.

void QTextCursor::insertImage(const QTextImageFormat &format, QTextFrameFormat::Position alignment)

Inserta la imagen definida por el format dado en la posición actual del cursor con el alignment especificado.

Se trata de una función sobrecargada.

Véase también position().

QTextList *QTextCursor::insertList(const QTextListFormat &format)

Inserta un nuevo bloque en la posición actual y lo convierte en el primer elemento de una lista recién creada con el valor format. Devuelve la lista creada.

Véase también currentList(), createList() y insertBlock().

QTextList *QTextCursor::insertList(QTextListFormat::Style style)

Inserta un nuevo bloque en la posición actual y lo convierte en el primer elemento de una lista recién creada con el valor style. Devuelve la lista creada.

Se trata de una función sobrecargada.

Véase también currentList(), createList() y insertBlock().

[since 6.4] void QTextCursor::insertMarkdown(const QString &markdown, QTextDocument::MarkdownFeatures features = QTextDocument::MarkdownDialectGitHub)

Inserta el texto markdown en la dirección actual position(), con el dialecto Markdown features especificado. Por defecto es el dialecto de GitHub.

Esta función se introdujo en Qt 6.4.

QTextTable *QTextCursor::insertTable(int rows, int columns, const QTextTableFormat &format)

Crea una nueva tabla con el número dado de rows y columns en el format especificado , la inserta en el cursor actual position() en el documento, y devuelve el objeto tabla. El cursor se desplaza al principio de la primera celda.

Debe haber al menos una fila y una columna en la tabla.

Véase también currentTable().

QTextTable *QTextCursor::insertTable(int rows, int columns)

Crea una nueva tabla con el número dado de rows y columns, la inserta en el cursor actual position() en el documento, y devuelve el objeto tabla. El cursor se desplaza al principio de la primera celda.

Debe haber al menos una fila y una columna en la tabla.

Se trata de una función sobrecargada.

Véase también currentTable().

void QTextCursor::insertText(const QString &text)

Inserta text en la posición actual, utilizando el formato de caracteres actual.

Si hay una selección, ésta se borra y se sustituye por text, por ejemplo:

cursor.clearSelection();
cursor.movePosition(QTextCursor::NextWord, QTextCursor::KeepAnchor);
cursor.insertText("Hello World");

Esto borra cualquier selección existente, selecciona la palabra en el cursor (es decir, desde position() hacia adelante), y reemplaza la selección con la frase "Hola Mundo".

Cualquier carácter ASCII de salto de línea (\n) en el texto insertado se transforma en separadores de bloque unicode, correspondientes a las llamadas a insertBlock().

Véase también charFormat() y hasSelection().

void QTextCursor::insertText(const QString &text, const QTextCharFormat &format)

Inserta text en la posición actual con la dirección format.

Se trata de una función sobrecargada.

bool QTextCursor::isCopyOf(const QTextCursor &other) const

Devuelve true si este cursor y other son copias el uno del otro, es decir, uno de ellos se creó como copia del otro y ninguno se ha movido desde entonces. Esto es mucho más estricto que la igualdad.

Véase también operator=() y operator==().

bool QTextCursor::isNull() const

Devuelve true si el cursor es nulo; en caso contrario devuelve false. Un cursor nulo es creado por el constructor por defecto.

void QTextCursor::joinPreviousEditBlock()

Al igual que beginEditBlock() indica el inicio de un bloque de operaciones de edición que deberían aparecer como una única operación para deshacer/rehacer. Sin embargo, a diferencia de beginEditBlock(), no inicia un nuevo bloque, sino que invierte la llamada anterior a endEditBlock() y, por tanto, hace que las operaciones siguientes formen parte del bloque de edición anterior creado.

Por ejemplo:

QTextCursor cursor(textDocument);
cursor.beginEditBlock();
cursor.insertText("Hello");
cursor.insertText("World");
cursor.endEditBlock();

// ...

cursor.joinPreviousEditBlock();
cursor.insertText("Hey");
cursor.endEditBlock();

textDocument->undo();

La llamada a deshacer() hará que se deshagan las tres inserciones.

Véase también beginEditBlock() y endEditBlock().

bool QTextCursor::keepPositionOnInsert() const

Devuelve si el cursor debe mantener su posición actual cuando se inserta texto en la posición del cursor.

Por defecto es false;

Véase también setKeepPositionOnInsert().

void QTextCursor::mergeBlockCharFormat(const QTextCharFormat &modifier)

Modifica el formato char de bloque del bloque actual (o de todos los bloques que contiene la selección) con el formato de bloque especificado por modifier.

Véase también setBlockCharFormat().

void QTextCursor::mergeBlockFormat(const QTextBlockFormat &modifier)

Modifica el formato de bloque del bloque actual (o de todos los bloques que contiene la selección) con el formato de bloque especificado por modifier.

Véase también setBlockFormat() y blockFormat().

void QTextCursor::mergeCharFormat(const QTextCharFormat &modifier)

Fusiona el formato de caracteres actual del cursor con las propiedades descritas por el formato modifier. Si el cursor tiene una selección, esta función aplica todas las propiedades establecidas en modifier a todos los formatos de caracteres que forman parte de la selección.

Véase también hasSelection() y setCharFormat().

bool QTextCursor::movePosition(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = MoveAnchor, int n = 1)

Mueve el cursor ejecutando operation n veces, utilizando mode, y devuelve true si todas las operaciones se han completado con éxito; en caso contrario devuelve false.

Por ejemplo, si esta función se utiliza repetidamente para buscar el final de la siguiente palabra, acabará fallando cuando se alcance el final del documento.

Por defecto, la operación de desplazamiento se realiza una vez (n = 1).

Si mode es KeepAnchor, el cursor selecciona el texto sobre el que se desplaza. Es el mismo efecto que consigue el usuario cuando mantiene pulsada la tecla Mayúsculas y mueve el cursor con las teclas del cursor.

Véase también setVisualNavigation().

int QTextCursor::position() const

Devuelve la posición absoluta del cursor dentro del documento. El cursor se posiciona entre caracteres.

Nota: Los "caracteres" en este caso se refieren a la cadena de objetos QChar, es decir, caracteres Unicode de 16 bits, y la posición se considera un índice dentro de esta cadena. Esto no se corresponde necesariamente con los grafemas individuales del sistema de escritura, ya que un mismo grafema puede estar representado por varios caracteres Unicode, como en el caso de los pares sustitutos, las ligaduras lingüísticas o los diacríticos.

Véase también setPosition(), movePosition(), anchor() y positionInBlock().

int QTextCursor::positionInBlock() const

Devuelve la posición relativa del cursor dentro del bloque. El cursor se sitúa entre caracteres.

Esto equivale a position() - block().position().

Nota: Los "caracteres" en este caso se refieren a la cadena de objetos QChar, es decir, caracteres Unicode de 16 bits, y la posición se considera un índice dentro de esta cadena. Esto no se corresponde necesariamente con los grafemas individuales del sistema de escritura, ya que un mismo grafema puede estar representado por varios caracteres Unicode, como en el caso de los pares sustitutos, las ligaduras lingüísticas o los diacríticos.

Véase también position().

void QTextCursor::removeSelectedText()

Si hay una selección, se borra su contenido; en caso contrario no hace nada.

Véase también hasSelection().

void QTextCursor::select(QTextCursor::SelectionType selection)

Selecciona el texto del documento de acuerdo con la dirección selection.

void QTextCursor::selectedTableCells(int *firstRow, int *numRows, int *firstColumn, int *numColumns) const

Si la selección abarca celdas de tabla, firstRow se rellena con el número de la primera fila de la selección, firstColumn con el número de la primera columna de la selección, y numRows y numColumns con el número de filas y columnas de la selección. Si la selección no abarca ninguna celda de la tabla, los resultados son inofensivos pero indefinidos.

QString QTextCursor::selectedText() const

Devuelve el texto de la selección actual (que puede estar vacío). Esto sólo devuelve el texto, sin información de formato de texto enriquecido. Si desea un fragmento de documento (es decir, texto enriquecido formateado) utilice selection() en su lugar.

Nota: Si la selección obtenida de un editor abarca un salto de línea, el texto contendrá un carácter separador de párrafo Unicode U+2029 en lugar de un carácter de nueva línea \n. Utilice QString::replace() para sustituir estos caracteres por nuevas líneas.

QTextDocumentFragment QTextCursor::selection() const

Devuelve la selección actual (que puede estar vacía) con toda su información de formato. Si sólo desea el texto seleccionado (es decir, texto sin formato), utilice selectedText() en su lugar.

Nota: A diferencia de QTextDocumentFragment::toPlainText(), selectedText() puede incluir caracteres unicode especiales como QChar::ParagraphSeparator.

Véase también QTextDocumentFragment::toPlainText().

int QTextCursor::selectionEnd() const

Devuelve el final de la selección o position() si el cursor no tiene selección.

Véase también selectionStart(), position() y anchor().

int QTextCursor::selectionStart() const

Devuelve el inicio de la selección o position() si el cursor no tiene selección.

Véase también selectionEnd(), position() y anchor().

void QTextCursor::setBlockCharFormat(const QTextCharFormat &format)

Establece el formato char del bloque actual (o de todos los bloques contenidos en la selección) en format.

Véase también blockCharFormat().

void QTextCursor::setBlockFormat(const QTextBlockFormat &format)

Establece el formato de bloque del bloque actual (o de todos los bloques que contiene la selección) en format.

Véase también blockFormat() y mergeBlockFormat().

void QTextCursor::setCharFormat(const QTextCharFormat &format)

Establece el formato de caracteres actual del cursor en format. Si el cursor tiene una selección, el format dado se aplica a la selección actual.

Véase también charFormat(), hasSelection() y mergeCharFormat().

void QTextCursor::setKeepPositionOnInsert(bool b)

Define si el cursor debe mantener su posición actual cuando el texto se inserta en la posición actual del cursor.

Si b es verdadero, el cursor mantiene su posición actual cuando el texto se inserta en la posición del cursor. Si b es falso, el cursor se mueve junto con el texto insertado.

El valor por defecto es false.

Tenga en cuenta que el cursor siempre se mueve cuando se inserta texto antes de la posición actual del cursor, y siempre mantiene su posición cuando se inserta texto después de la posición actual del cursor.

Véase también keepPositionOnInsert().

void QTextCursor::setPosition(int pos, QTextCursor::MoveMode m = MoveAnchor)

Mueve el cursor a la posición absoluta en el documento especificado por pos utilizando un MoveMode especificado por m. El cursor se sitúa entre caracteres.

Nota: Los "caracteres" en este caso se refieren a la cadena de objetos QChar, es decir, caracteres Unicode de 16 bits, y pos se considera un índice dentro de esta cadena. Esto no se corresponde necesariamente con los grafemas individuales del sistema de escritura, ya que un mismo grafema puede estar representado por varios caracteres Unicode, como en el caso de los pares sustitutos, las ligaduras lingüísticas o los diacríticos. Para un enfoque más genérico de la navegación por el documento, utilice movePosition(), que respetará los límites reales de los grafemas en el texto.

Véase también position(), movePosition() y anchor().

void QTextCursor::setVerticalMovementX(int x)

Establece la posición x visual para los movimientos verticales del cursor en x.

La posición x del movimiento vertical se borra automáticamente cuando el cursor se mueve horizontalmente, y se mantiene sin cambios cuando el cursor se mueve verticalmente. Este mecanismo permite que el cursor se mueva hacia arriba y hacia abajo en una línea visualmente recta con fuentes proporcionales, y que "salte" suavemente sobre líneas cortas.

Un valor de -1 indica que no hay posición x predefinida. Se fijará automáticamente la próxima vez que el cursor se desplace hacia arriba o hacia abajo.

Véase también verticalMovementX().

void QTextCursor::setVisualNavigation(bool b)

Establece la navegación visual en b.

La navegación visual consiste en saltarse los párrafos de texto ocultos. Por defecto es false.

Véase también visualNavigation() y movePosition().

[noexcept] void QTextCursor::swap(QTextCursor &other)

Intercambia esta instancia de cursor de texto con other. Esta operación es muy rápida y nunca falla.

int QTextCursor::verticalMovementX() const

Devuelve la posición x visual para los movimientos verticales del cursor.

Un valor de -1 indica que no hay posición x predefinida. Se fijará automáticamente la próxima vez que el cursor se mueva hacia arriba o hacia abajo.

Véase también setVerticalMovementX().

bool QTextCursor::visualNavigation() const

Devuelve true si el cursor realiza navegación visual; en caso contrario devuelve false.

Navegación visual significa saltarse párrafos de texto ocultos. El valor por defecto es false.

Véase también setVisualNavigation() y movePosition().

bool QTextCursor::operator!=(const QTextCursor &other) const

Devuelve true si el cursor other se encuentra en una posición del documento diferente a la de este cursor; en caso contrario devuelve false.

bool QTextCursor::operator<(const QTextCursor &other) const

Devuelve true si el cursor other está situado más adelante en el documento que este cursor; en caso contrario devuelve false.

bool QTextCursor::operator<=(const QTextCursor &other) const

Devuelve true si el cursor other está situado más adelante o en la misma posición en el documento que este cursor; en caso contrario devuelve false.

QTextCursor &QTextCursor::operator=(const QTextCursor &cursor)

Hace una copia de cursor y la asigna a este QTextCursor. Ten en cuenta que QTextCursor es una clase implícitamente compartida.

bool QTextCursor::operator==(const QTextCursor &other) const

Devuelve true si el cursor other está en la misma posición en el documento que este cursor; en caso contrario devuelve false.

bool QTextCursor::operator>(const QTextCursor &other) const

Devuelve true si el cursor other está situado antes en el documento que este cursor; en caso contrario devuelve false.

bool QTextCursor::operator>=(const QTextCursor &other) const

Devuelve true si el cursor other está posicionado antes o en la misma posición en el documento que este cursor; en caso contrario devuelve false.

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