Tengo un formulario con un QTextEdit
en él, que se llama translationInput
. Estoy tratando de proporcionar la funcionalidad de edición para el usuario.Moviendo el cursor dentro de QTextEdit
Este QTextEdit
contendrá texto con formato HTML. Tengo un conjunto de botones, como "negrita", "Cursiva", y así sucesivamente, que deberían agregar las etiquetas correspondientes en el documento. Si se presiona el botón cuando no se selecciona texto, solo quiero insertar un par de etiquetas, por ejemplo, <b></b>
. Si se selecciona texto, quiero que las etiquetas aparezcan a la izquierda y a la derecha.
Esto funciona bien. Sin embargo, también quiero que el cursor se coloque antes de la etiqueta de cierre después de eso, para que el usuario pueda seguir escribiendo dentro de la nueva etiqueta agregada sin necesidad de cambiar la posición del cursor manualmente. De forma predeterminada, el cursor aparece a la derecha después de el nuevo texto agregado (por lo que en mi caso, justo después de la etiqueta de cierre).
Aquí está el código que tengo para el botón Cursiva :
//getting the selected text(if any), and adding tags.
QString newText = ui.translationInput->textCursor().selectedText().prepend("<i>").append("</i>");
//Inserting the new-formed text into the edit
ui.translationInput->insertPlainText(newText);
//Returning focus to the edit
ui.translationInput->setFocus();
//!!! Here I want to move the cursor 4 characters left to place it before the </i> tag.
ui.translationInput->textCursor().movePosition(QTextCursor::Left, QTextCursor::MoveAnchor, 4);
Sin embargo, la última línea no hace nada, el cursor no se mueve, a pesar de las declaraciones de movePosition()
true
, que significa que todas las operaciones se completaron con éxito.
También he intentado hacer esto con QTextCursor::PreviousCharacter
en lugar de QTextCursor::Left
, e intenté moverlo antes y después de devolver el foco a la edición, que no cambia nada.
Entonces la pregunta es, ¿cómo muevo el cursor dentro de mi QTextEdit
?
Puede pasar directamente el cursor de texto mediante el uso de 'MoveCursor()': ' ui.translationInput-> MoveCursor (QTextCursor :: Izquierda, QTextCursor :: MoveAnchor, 4); ' – iliis
Creo que el comentario anterior debe convertirse en una respuesta. –